QByteArray Class
QByteArrayクラスはバイト配列です。詳細...
Header: | #include <QByteArray> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 継承したメンバを含む、すべてのメンバの一覧
- 非推奨メンバー
- QByteArrayは、暗黙的に共有されるクラスおよび文字列データのためのクラスの一部です。
このクラスは強く比較可能です。
このクラスは const char * およびQByteArrayView と強く比較可能です。
このクラスはQChar, char16_t,QString,QStringView,QLatin1StringView,QUtf8StringView と強く比較可能です。
文字列型と比較する場合、内容は utf-8 として解釈されます。
注意:このクラスの関数はすべてリエントラントです。
パブリック型
class | FromBase64Result |
enum | Base64Option { Base64Encoding, Base64UrlEncoding, KeepTrailingEquals, OmitTrailingEquals, IgnoreBase64DecodingErrors, AbortOnBase64DecodingErrors } |
flags | Base64Options |
const_iterator | |
const_reverse_iterator | |
iterator | |
reverse_iterator |
パブリック関数
QByteArray() | |
QByteArray(const char *data, qsizetype size = -1) | |
QByteArray(qsizetype size, Qt::Initialization) | |
QByteArray(qsizetype size, char ch) | |
QByteArray(const QByteArray &other) | |
QByteArray(QByteArray &&other) | |
~QByteArray() | |
QByteArray & | append(const QByteArray &ba) |
QByteArray & | append(QByteArrayView data) |
QByteArray & | append(char ch) |
QByteArray & | append(const char *str) |
QByteArray & | append(const char *str, qsizetype len) |
QByteArray & | append(qsizetype count, char ch) |
(since 6.6) QByteArray & | assign(QByteArrayView v) |
(since 6.6) QByteArray & | assign(InputIterator first, InputIterator last) |
(since 6.6) QByteArray & | assign(qsizetype n, char c) |
char | at(qsizetype i) const |
char & | back() |
char | back() const |
QByteArray::iterator | begin() |
QByteArray::const_iterator | begin() const |
qsizetype | capacity() const |
QByteArray::const_iterator | cbegin() const |
QByteArray::const_iterator | cend() const |
void | chop(qsizetype n) |
QByteArray | chopped(qsizetype len) && |
QByteArray | chopped(qsizetype len) const & |
void | clear() |
(since 6.0) int | compare(QByteArrayView bv, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
QByteArray::const_iterator | constBegin() const |
const char * | constData() const |
QByteArray::const_iterator | constEnd() const |
(since 6.0) bool | contains(QByteArrayView bv) const |
bool | contains(char ch) const |
(since 6.0) qsizetype | count(QByteArrayView bv) const |
qsizetype | count(char ch) const |
QByteArray::const_reverse_iterator | crbegin() const |
QByteArray::const_reverse_iterator | crend() const |
char * | data() |
const char * | data() const |
QByteArray::iterator | end() |
QByteArray::const_iterator | end() const |
(since 6.0) bool | endsWith(QByteArrayView bv) const |
bool | endsWith(char ch) const |
(since 6.1) QByteArray::iterator | erase(QByteArray::const_iterator first, QByteArray::const_iterator last) |
(since 6.5) QByteArray::iterator | erase(QByteArray::const_iterator it) |
QByteArray & | fill(char ch, qsizetype size = -1) |
(since 6.0) QByteArray | first(qsizetype n) && |
(since 6.0) QByteArray | first(qsizetype n) const & |
char & | front() |
char | front() const |
(since 6.0) qsizetype | indexOf(QByteArrayView bv, qsizetype from = 0) const |
qsizetype | indexOf(char ch, qsizetype from = 0) const |
(since 6.0) QByteArray & | insert(qsizetype i, QByteArrayView data) |
QByteArray & | insert(qsizetype i, const QByteArray &data) |
QByteArray & | insert(qsizetype i, const char *s) |
QByteArray & | insert(qsizetype i, char ch) |
QByteArray & | insert(qsizetype i, const char *data, qsizetype len) |
QByteArray & | insert(qsizetype i, qsizetype count, char ch) |
bool | isEmpty() const |
bool | isLower() const |
bool | isNull() const |
bool | isUpper() const |
(since 6.3) bool | isValidUtf8() const |
(since 6.0) QByteArray | last(qsizetype n) && |
(since 6.0) QByteArray | last(qsizetype n) const & |
(since 6.0) qsizetype | lastIndexOf(QByteArrayView bv, qsizetype from) const |
(since 6.2) qsizetype | lastIndexOf(QByteArrayView bv) const |
qsizetype | lastIndexOf(char ch, qsizetype from = -1) const |
QByteArray | left(qsizetype len) && |
QByteArray | left(qsizetype len) const & |
QByteArray | leftJustified(qsizetype width, char fill = ' ', bool truncate = false) const |
qsizetype | length() const |
(since 6.8) qsizetype | max_size() const |
QByteArray | mid(qsizetype pos, qsizetype len = -1) && |
QByteArray | mid(qsizetype pos, qsizetype len = -1) const & |
(since 6.4) QByteArray | percentDecoded(char percent = '%') const |
QByteArray & | prepend(QByteArrayView ba) |
QByteArray & | prepend(char ch) |
QByteArray & | prepend(const QByteArray &ba) |
QByteArray & | prepend(const char *str) |
QByteArray & | prepend(const char *str, qsizetype len) |
QByteArray & | prepend(qsizetype count, char ch) |
void | push_back(const QByteArray &other) |
(since 6.0) void | push_back(QByteArrayView str) |
void | push_back(char ch) |
void | push_back(const char *str) |
void | push_front(const QByteArray &other) |
(since 6.0) void | push_front(QByteArrayView str) |
void | push_front(char ch) |
void | push_front(const char *str) |
QByteArray::reverse_iterator | rbegin() |
QByteArray::const_reverse_iterator | rbegin() const |
QByteArray & | remove(qsizetype pos, qsizetype len) |
(since 6.5) QByteArray & | removeAt(qsizetype pos) |
(since 6.5) QByteArray & | removeFirst() |
(since 6.1) QByteArray & | removeIf(Predicate pred) |
(since 6.5) QByteArray & | removeLast() |
QByteArray::reverse_iterator | rend() |
QByteArray::const_reverse_iterator | rend() const |
QByteArray | repeated(qsizetype times) const |
QByteArray & | replace(qsizetype pos, qsizetype len, QByteArrayView after) |
(since 6.0) QByteArray & | replace(QByteArrayView before, QByteArrayView after) |
QByteArray & | replace(char before, QByteArrayView after) |
QByteArray & | replace(char before, char after) |
QByteArray & | replace(const char *before, qsizetype bsize, const char *after, qsizetype asize) |
QByteArray & | replace(qsizetype pos, qsizetype len, const char *after, qsizetype alen) |
void | reserve(qsizetype size) |
void | resize(qsizetype size) |
(since 6.4) void | resize(qsizetype newSize, char c) |
(since 6.8) void | resizeForOverwrite(qsizetype size) |
QByteArray | right(qsizetype len) && |
QByteArray | right(qsizetype len) const & |
QByteArray | rightJustified(qsizetype width, char fill = ' ', bool truncate = false) const |
QByteArray & | setNum(int n, int base = 10) |
QByteArray & | setNum(long n, int base = 10) |
QByteArray & | setNum(qlonglong n, int base = 10) |
QByteArray & | setNum(qulonglong n, int base = 10) |
QByteArray & | setNum(short n, int base = 10) |
QByteArray & | setNum(uint n, int base = 10) |
QByteArray & | setNum(ulong n, int base = 10) |
QByteArray & | setNum(ushort n, int base = 10) |
QByteArray & | setNum(double n, char format = 'g', int precision = 6) |
QByteArray & | setNum(float n, char format = 'g', int precision = 6) |
QByteArray & | setRawData(const char *data, qsizetype size) |
void | shrink_to_fit() |
QByteArray | simplified() const |
qsizetype | size() const |
(since 6.8) QByteArray & | slice(qsizetype pos, qsizetype n) |
(since 6.8) QByteArray & | slice(qsizetype pos) |
(since 6.0) QByteArray | sliced(qsizetype pos, qsizetype n) && |
(since 6.0) QByteArray | sliced(qsizetype pos, qsizetype n) const & |
(since 6.0) QByteArray | sliced(qsizetype pos) && |
(since 6.0) QByteArray | sliced(qsizetype pos) const & |
QList<QByteArray> | split(char sep) const |
void | squeeze() |
(since 6.0) bool | startsWith(QByteArrayView bv) const |
bool | startsWith(char ch) const |
void | swap(QByteArray &other) |
QByteArray | toBase64(QByteArray::Base64Options options = Base64Encoding) const |
CFDataRef | toCFData() const |
double | toDouble(bool *ok = nullptr) const |
(since 6.5) emscripten::val | toEcmaUint8Array() |
float | toFloat(bool *ok = nullptr) const |
QByteArray | toHex(char separator = '\0') const |
int | toInt(bool *ok = nullptr, int base = 10) const |
long | toLong(bool *ok = nullptr, int base = 10) const |
qlonglong | toLongLong(bool *ok = nullptr, int base = 10) const |
QByteArray | toLower() const |
NSData * | toNSData() const |
QByteArray | toPercentEncoding(const QByteArray &exclude = QByteArray(), const QByteArray &include = QByteArray(), char percent = '%') const |
CFDataRef | toRawCFData() const |
NSData * | toRawNSData() const |
short | toShort(bool *ok = nullptr, int base = 10) const |
std::string | toStdString() const |
uint | toUInt(bool *ok = nullptr, int base = 10) const |
ulong | toULong(bool *ok = nullptr, int base = 10) const |
qulonglong | toULongLong(bool *ok = nullptr, int base = 10) const |
ushort | toUShort(bool *ok = nullptr, int base = 10) const |
QByteArray | toUpper() const |
QByteArray | trimmed() const |
void | truncate(qsizetype pos) |
const char * | operator const char *() const |
const void * | operator const void *() const |
QByteArray & | operator+=(const QByteArray &ba) |
QByteArray & | operator+=(char ch) |
QByteArray & | operator+=(const char *str) |
QByteArray & | operator=(QByteArray &&other) |
QByteArray & | operator=(const QByteArray &other) |
QByteArray & | operator=(const char *str) |
char & | operator[](qsizetype i) |
char | operator[](qsizetype i) const |
静的パブリック・メンバー
QByteArray | fromBase64(const QByteArray &base64, QByteArray::Base64Options options = Base64Encoding) |
QByteArray::FromBase64Result | fromBase64Encoding(QByteArray &&base64, QByteArray::Base64Options options = Base64Encoding) |
QByteArray::FromBase64Result | fromBase64Encoding(const QByteArray &base64, QByteArray::Base64Options options = Base64Encoding) |
QByteArray | fromCFData(CFDataRef data) |
(since 6.5) QByteArray | fromEcmaUint8Array(emscripten::val uint8array) |
QByteArray | fromHex(const QByteArray &hexEncoded) |
QByteArray | fromNSData(const NSData *data) |
QByteArray | fromPercentEncoding(const QByteArray &input, char percent = '%') |
QByteArray | fromRawCFData(CFDataRef data) |
QByteArray | fromRawData(const char *data, qsizetype size) |
QByteArray | fromRawNSData(const NSData *data) |
QByteArray | fromStdString(const std::string &str) |
(since 6.8) qsizetype | maxSize() |
QByteArray | number(int n, int base = 10) |
QByteArray | number(long n, int base = 10) |
QByteArray | number(qlonglong n, int base = 10) |
QByteArray | number(qulonglong n, int base = 10) |
QByteArray | number(uint n, int base = 10) |
QByteArray | number(ulong n, int base = 10) |
QByteArray | number(double n, char format = 'g', int precision = 6) |
関連する非メンバー
(since 6.1) qsizetype | erase(QByteArray &ba, const T &t) |
(since 6.1) qsizetype | erase_if(QByteArray &ba, Predicate pred) |
quint16 | qChecksum(QByteArrayView data, Qt::ChecksumType standard = Qt::ChecksumIso3309) |
QByteArray | qCompress(const QByteArray &data, int compressionLevel = -1) |
QByteArray | qCompress(const uchar *data, qsizetype nbytes, int compressionLevel = -1) |
QByteArray | qUncompress(const QByteArray &data) |
QByteArray | qUncompress(const uchar *data, qsizetype nbytes) |
int | qstrcmp(const char *str1, const char *str2) |
char * | qstrcpy(char *dst, const char *src) |
char * | qstrdup(const char *src) |
int | qstricmp(const char *str1, const char *str2) |
size_t | qstrlen(const char *str) |
int | qstrncmp(const char *str1, const char *str2, size_t len) |
char * | qstrncpy(char *dst, const char *src, size_t len) |
int | qstrnicmp(const char *str1, const char *str2, size_t len) |
size_t | qstrnlen(const char *str, size_t maxlen) |
bool | operator!=(const QByteArray &lhs, const QByteArray &rhs) |
bool | operator!=(const QByteArray &lhs, const char *const &rhs) |
bool | operator!=(const char *const &lhs, const QByteArray &rhs) |
QByteArray | operator+(char a1, const QByteArray &a2) |
QByteArray | operator+(const QByteArray &a1, char a2) |
QByteArray | operator+(const QByteArray &a1, const QByteArray &a2) |
QByteArray | operator+(const QByteArray &a1, const char *a2) |
QByteArray | operator+(const char *a1, const QByteArray &a2) |
bool | operator<(const QByteArray &lhs, const QByteArray &rhs) |
bool | operator<(const QByteArray &lhs, const char *const &rhs) |
bool | operator<(const char *const &lhs, const QByteArray &rhs) |
QDataStream & | operator<<(QDataStream &out, const QByteArray &ba) |
bool | operator<=(const QByteArray &lhs, const QByteArray &rhs) |
bool | operator<=(const QByteArray &lhs, const char *const &rhs) |
bool | operator<=(const char *const &lhs, const QByteArray &rhs) |
bool | operator==(const QByteArray &lhs, const QByteArray &rhs) |
bool | operator==(const QByteArray &lhs, const char *const &rhs) |
bool | operator==(const char *const &lhs, const QByteArray &rhs) |
bool | operator>(const QByteArray &lhs, const QByteArray &rhs) |
bool | operator>(const QByteArray &lhs, const char *const &rhs) |
bool | operator>(const char *const &lhs, const QByteArray &rhs) |
bool | operator>=(const QByteArray &lhs, const QByteArray &rhs) |
bool | operator>=(const QByteArray &lhs, const char *const &rhs) |
bool | operator>=(const char *const &lhs, const QByteArray &rhs) |
QDataStream & | operator>>(QDataStream &in, QByteArray &ba) |
マクロ
QByteArrayLiteral(ba) | |
QT_NO_CAST_FROM_BYTEARRAY | |
(since 6.8) | QT_NO_QSNPRINTF |
詳しい説明
QByteArray は、生のバイト('˶'˶'を含む)と従来の 8 ビット'˶'で終端された文字列の両方を格納するために使用できます。QByteArray を使用すると、const char *
を使用するよりもはるかに便利です。QByteArray を使用すると、 を使用するよりもはるかに便利です。裏では、常にデータの後に ' \0' 終端文字が続くようにし、暗黙の共有(copy-on-write) を使用してメモリ使用量を削減し、データの不要なコピーを回避します。
QByteArrayに加えて、Qtは文字列データを格納するためのQString クラスも提供しています。ほとんどの目的では、QString が使用したいクラスです。QByteArrayが(ASCIIを使用するいくつかのレガシーなケースを除いて)格納するバイトのエンコーディングやセマンティクスに関する仮定を避けることを目的としているのに対して、このクラスはその内容をUnicodeテキスト(UTF-16を使用してエンコードされた)として理解します。さらに、QString は Qt API の至る所で使用されています。QByteArrayが適切な2つの主なケースは、生のバイナリデータを格納する必要がある場合と、メモリの節約が重要な場合です(例:Qt for Embedded Linux)。
QByteArrayを初期化する1つの方法は、コンストラクタにconst char *
。例えば、次のコードではデータ "Hello "を含むサイズ5のバイト配列を作成しています:
QByteArray ba("Hello");
size() は 5 ですが、バイト配列の最後には ' \0' バイトが追加されます。このため、基礎となるデータへのポインタを要求する関数が使用された場合 (data() の呼び出しなど)、指されたデータは ' \0' 終端であることが保証されます。
QByteArray はconst char *
データのディープコピーを作成するため、後で変更しても副作用はありません。(パフォーマンス上の理由などでデータの深いコピーを取りたくない場合は、代わりにQByteArray::fromRawData() を使用してください)。
もう1つの方法は、resize ()を使用して配列のサイズを設定し、データをバイトごとに初期化することです。QByteArrayは、C++の配列と同様に0ベースのインデックスを使用します。特定のインデックス位置のバイトにアクセスするには、 operator[]() を使用します。非 const バイト配列では、operator[]() は、代入の左辺で使用できるバイトへの参照を返します。たとえば、以下のようになります:
QByteArray ba; ba.resize(5); ba[0] = 0x3c; ba[1] = 0xb8; ba[2] = 0x64; ba[3] = 0x18; ba[4] = 0xca;
読み取り専用アクセスの場合は、at() を使用することもできます:
for (qsizetype i = 0; i < ba.size(); ++i) { if (ba.at(i) >= 'a' && ba.at(i) <= 'f') cout << "Found character in range [a-f]" << endl; }
at() は、ディープコピーが発生しないため、operator[]() よりも高速である。
一度に多くのバイトを取り出すには、first ()、last ()、sliced ()を使用する。
QByteArray は ' \0' バイトを埋め込むことができます。size() 関数は常に、埋め込まれた '˶'˶'バイトを含み、QByteArray によって追加された終端の '˶'˶'を除いた配列全体のサイズを返します。例えば
QByteArray ba1("ca\0r\0t"); ba1.size(); // Returns 2. ba1.constData(); // Returns "ca" with terminating \0. QByteArray ba2("ca\0r\0t", 3); ba2.size(); // Returns 3. ba2.constData(); // Returns "ca\0" with terminating \0. QByteArray ba3("ca\0r\0t", 4); ba3.size(); // Returns 4. ba3.constData(); // Returns "ca\0r" with terminating \0. const char cart[] = {'c', 'a', '\0', 'r', '\0', 't'}; QByteArray ba4(QByteArray::fromRawData(cart, 6)); ba4.size(); // Returns 6. ba4.constData(); // Returns "ca\0r\0t" without terminating \0.
最初の'˶'0'バイトまでのデータの長さを取得したい場合は、バイト配列に対してqstrlen()を呼び出します。
resize() を呼び出した後、新しく割り当てられたバイトは未定義の値になります。すべてのバイトを特定の値に設定するには、fill() を呼び出します。
実際のバイトへのポインタを取得するには、data() またはconstData() を呼び出す。これらの関数は、データの先頭へのポインタを返す。このポインタは、QByteArrayに対してconst以外の関数が呼び出されるまで有効であることが保証される。また、QByteArray がraw data から作成されたものでない限り、データは ' \0' バイトで終わることが保証されます。この ' \0' バイトは QByteArray によって自動的に提供され、size() ではカウントされません。
QByteArray には、バイトデータを変更するための以下の基本関数があります:append()、prepend()、insert()、replace()、およびremove()。たとえば、以下のようになる:
QByteArray x("and"); x.prepend("rock "); // x == "rock and" x.append(" roll"); // x == "rock and roll" x.replace(5, 3, "&"); // x == "rock & roll"
上記の例では、replace ()関数の最初の2つの引数は、置換を開始する位置と置換するバイト数である。
データ変更関数によって配列のサイズが大きくなると、QByteArrayオブジェクトのメモリが再割り当てされることがあります。このような場合、QByteArrayは、配列のサイズが大幅に増加するまで、再割り当てを行わずにさらに拡張するためのスペースを確保するために、すぐに必要な分以上に拡張します。
insert ()、remove ()、およびサブ配列を異なるサイズの配列に置き換える場合、replace ()関数は、配列内の多くのバイトをメモリ上の少なくとも1つの位置だけ移動させる必要があるため、大きな配列では時間がかかる(線形時間)ことがあります。
QByteArrayを少しずつ構築していて、QByteArrayに含まれるバイト数があらかじめおおよそわかっている場合は、reserve ()を呼び出して、QByteArrayに一定量のメモリを事前に割り当ててもらうことができます。また、capacity ()を呼び出すと、QByteArrayが実際に割り当てたメモリ量を知ることができます。
constでない演算子や関数を使用すると、暗黙の共有によりQByteArrayがデータのディープコピーを行う可能性があることに注意してください。
QByteArrayはSTLスタイルのイテレータ(QByteArray::const_iterator とQByteArray::iterator )を提供します。実際には、イテレータは、C++標準ライブラリが提供する汎用アルゴリズムを使用する場合に便利です。
注意: イテレータと個々のQByteArray要素への参照は、安定性の問題があります。QByteArrayを変更する操作(例えば、insert ()やremove ())が呼び出されると、それらはしばしば無効になります。安定性とイテレータのような機能が必要な場合は、イテレータの代わりにインデックスを使用する必要があります。
注意: QByteArray上のイテレータや、QByteArray内の個々のバイトへの参照は、QByteArrayのconstメソッド以外が呼び出されたときに有効であることを保証できません。non-constメソッドの呼び出し後にそのようなイテレータや参照にアクセスすると、未定義の動作につながります。イテレータのような機能の安定性が必要な場合は、イテレータの代わりにインデックスを使用する必要があります。
QByteArray内の特定のバイトまたはバイト列の出現回数をすべて検索したい場合は、indexOf ()またはlastIndexOf ()を使用します。前者は指定されたインデックス位置から前方を検索し、後者は後方を検索する。どちらも、バイト列が見つかればそのインデックス位置を返し、見つからなければ-1を返す。例えば、ある文字列の出現回数をすべて検索する典型的なループを以下に示す:
QByteArray ba("We must be <b>bold</b>, very <b>bold</b>"); qsizetype j = 0; while ((j = ba.indexOf("<b>", j)) != -1) { cout << "Found <b> tag at index position " << j << endl; ++j; }
単にQByteArrayに特定のバイト列が含まれているかどうかを調べたい場合は、contains()を使用する。特定のバイト列がバイト配列に何回出現するかを調べたい場合は、 count() を使用します。特定の値の出現回数をすべて別の値に置き換えるには、2 つのパラメータを持つreplace() のオーバーロードを使用します。
QByteArray演算子<()、演算子<=()、演算子==()、演算子>=()などのオーバーロードされた演算子を使用して、値を比較することができます。この比較は、バイトの数値のみに基づいており、非常に高速ですが、人間が期待するものではありません。QString::localeAwareCompareユーザーインターフェースの文字列をソートするには、()の方が適しています。
歴史的な理由から、QByteArrayはヌルバイト配列と空バイト配列を区別しています。ヌルバイト配列は、QByteArrayのデフォルトコンストラクタを使用するか、コンストラクタに(const char *)0を渡して初期化されたバイト配列です。空のバイト配列とは、サイズが 0 のバイト配列のことです。ヌルバイト配列は常に空ですが、空のバイト配列は必ずしもヌルとは限りません:
QByteArray().isNull(); // returns true QByteArray().isEmpty(); // returns true QByteArray("").isNull(); // returns false QByteArray("").isEmpty(); // returns true QByteArray("abc").isNull(); // returns false QByteArray("abc").isEmpty(); // returns false
isNull() を除くすべての関数は、ヌル・バイト配列を空のバイト配列と同じように扱う。例えば、data()はヌル・バイト配列の'˶0'バイトへの有効なポインタ(nullptrではない)を返し、QByteArray()はQByteArray("")と等しく比較されます。常にisEmpty() を使用し、isNull() を避けることをお勧めします。
最大サイズとメモリ不足の条件
QByteArrayの最大サイズはアーキテクチャに依存します。ほとんどの64ビット・システムでは2GB以上のメモリを割り当てることができ、標準的な上限は2^63バイトです。実際の値は、データ・ブロックの管理に必要なオーバーヘッドにも依存します。その結果、32ビット・プラットフォームでは2GBからオーバーヘッドを差し引いたサイズ、64ビット・プラットフォームでは2^63バイトからオーバーヘッドを差し引いたサイズが最大になると予想されます。QByteArrayに格納できる要素数は、この最大サイズです。
メモリ割り当てに失敗すると、アプリケーションが例外サポート付きでコンパイルされている場合、QByteArray はstd::bad_alloc
例外をスローします。Qt コンテナのメモリ不足は、Qt が例外をスローする唯一のケースです。例外が無効になっている場合、メモリ不足は未定義の動作です。
オペレーティング・システムは、割り当てられたメモリを大量に保持するアプリケーション、特に連続した大きなブロックを保持するアプリケーションに対して、さらなる制限を課す可能性があることに注意してください。そのような考慮事項や、そのような動作の設定、あるいは緩和策は、QByteArray APIの範囲外である。
CロケールとASCII関数
QByteArrayは通常、セマンティクスを仮定せずにデータをバイトとして扱います。セマンティクスを仮定する場合は、CロケールとASCIIエンコーディングを使用します。標準的な Unicode エンコーディングはQString でサポートされています。その他のエンコーディングはQStringEncoder やQStringDecoder を使って Unicode に変換することができます。テキストのロケール固有の解釈については、QLocale またはQString を使用してください。
C文字列
従来の C 文字列は、' \0'終端文字列としても知られ、開始点によって指定され、それ以 降の最初の'˶0'バイトまでの各バイトを暗黙的に含むバイト列です。長さなしでこのようなポインタを受け入れるメソッドは、このバイトシーケンスとして解釈します。このようなシーケンスは、構造上、' \0'バイトを含むことはできません。
他のオーバーロードは、開始ポインタとバイトカウントを受け入れます。これらのオーバーロードは、開始アドレスに続く、与えられたバイト数を使用します。ポインタだけを受け取るオーバーロードがない場合、-1 の長さを渡すと、メソッドはポインタの後の最初の ' \0' バイトのオフセットを長さとして使用します。
スペーシング文字
頻繁に要求されるのは、バイト配列からスペーシング文字を削除することである('\n'
、'\t'
、' '
など)。QByteArrayの両端からスペーシング文字を削除したい場合は、trimmed ()を使用する。また、バイト配列内の各スペーシング文字を 1 つのスペース文字に置き換える場合は、simplified() を使用します。これらの目的で認識されるのは、ASCII スペーシング文字のみです。
数値-文字列変換
数値データ型と文字列表現間の変換を行う関数は、ユーザーのロケール設定に関係なく、Cロケールで実行される。数値と文字列の間でロケールを意識した変換を行うには、QLocale を使用してください。
文字の大文字と小文字
QByteArrayでは、大文字と小文字、および大文字小文字に依存しない比較の概念はASCIIに限定されています。非ASCII文字は大文字小文字がエンコーディングに依存するため、ケースレスとして扱われます。これは、大文字小文字を区別しないオプションをサポートする関数や、引数の大文字小文字を変更する関数に影響する。この問題が発生する関数には、compare()、isLower()、isUpper()、toLower()、toUpper() がある。
QStringはUnicodeで文字を表現しているため、この問題は適用されません。
QByteArrayView 、QString 、QBitArrayも参照のこと 。
メンバ型ドキュメント
enum QByteArray::Base64Option
flags QByteArray::Base64Options
この enum は、Base64 のエンコードとデコードで使用可能なオプションを含みます。Base64 はRFC 4648 で定義されており、以下のオプションがあります:
定数 | 値 | 説明 |
---|---|---|
QByteArray::Base64Encoding | 0 | (デフォルト) 通常の Base64 アルファベットで、単に "base64" と呼ばれます。 |
QByteArray::Base64UrlEncoding | 1 | base64url "と呼ばれる代替アルファベットで、アルファベットの中の2つの文字を URLに親しみやすいように置き換えたもの。 |
QByteArray::KeepTrailingEquals | 0 | (デフォルト) エンコードされたデータの末尾のパディング等号を保持する。 |
QByteArray::OmitTrailingEquals | 2 | エンコードされたデータの最後にパディング等号を追加するのを省略します。 |
QByteArray::IgnoreBase64DecodingErrors | 0 | Base64エンコードされたデータをデコードするとき、入力のエラーを無視する。この列挙値は Qt 5.15 で追加されました。 |
QByteArray::AbortOnBase64DecodingErrors | 4 | Base64 エンコードされたデータをデコードするとき、最初のデコードエラーで停止します。この enum 値は Qt 5.15 で追加されました。 |
QByteArray::fromBase64Encoding() とQByteArray::fromBase64() は KeepTrailingEquals と OmitTrailingEquals オプションを無視します。IgnoreBase64DecodingErrors オプションが指定されている場合、末尾の等号が欠落していたり、等号が多すぎたりしてもエラーフラグを立てません。代わりに AbortOnBase64DecodingErrors が指定された場合、入力にはパディングがないか、正しい量の等号がなければなりません。
Base64Options 型はQFlags<Base64Option> の typedef です。これは Base64Option 値の OR の組み合わせを格納する。
QByteArray::const_iterator
この型定義は,QByteArray に対する STL スタイルの const イテレータを提供する.
QByteArray::const_reverse_iterator およびQByteArray::iteratorも参照 .
QByteArray::const_reverse_iterator
この型定義は,QByteArray に対する STL 形式の const 逆イテレータを提供する.
QByteArray::reverse_iterator およびQByteArray::const_iterator も参照 .
QByteArray::iterator
この型定義は,QByteArray に対する STL 形式の非 const イテレータを提供する.
QByteArray::reverse_iterator およびQByteArray::const_iterator も参照 .
QByteArray::reverse_iterator
この型定義は,QByteArray に対する STL 形式の非 const 逆イテレータを提供する.
QByteArray::const_reverse_iterator およびQByteArray::iterator も参照 .
メンバ関数ドキュメント
[static constexpr noexcept, since 6.8]
qsizetype QByteArray::maxSize()
[constexpr noexcept, since 6.8]
qsizetype QByteArray::max_size() const
この関数は,バイト配列が理論的に保持できる要素の最大数を返す.実際には、システムで利用可能なメモリ量によって制限されるため、この数はもっと小さくなります。
この関数は Qt 6.8 で導入されました。
const char *QByteArray::operator const char *() const
const void *QByteArray::operator const void *() const
注意: 新しいコードでは、代わりにconstData() を使用してください。
バイト配列に格納されているデータへのポインタを返します。このポインタを使用して、配列を構成するバイトにアクセスできます。データは'˶0'終端です。
デタッチが起こらず、QByteArray が変更されない限り、ポインタは有効です。
この演算子は主に、const char *
を受け付ける関数にバイト配列を渡す場合に便利です。
アプリケーションのコンパイル時にQT_NO_CAST_FROM_BYTEARRAY
を定義することで、この演算子を無効にすることができます。
注意:QByteArray には、' \0'を含む任意のバイト値を格納できますが、char *
引数を受け取るほとんどの関数は、最初に遭遇した' \0'でデータが終了すると見 なします。
constData()も参照してください 。
QByteArray QByteArray::left(qsizetype len) &&
QByteArray QByteArray::left(qsizetype len) const &
このバイト配列の最初のlen バイトを含むバイト配列を返します。
len が範囲外であってはならないことが分かっている場合、新しいコードではfirst() を代わりに使用すると高速です。
len がsize() より大きい場合は、バイト配列全体が返される。
len が 0 より小さい場合は、空のQByteArray を返す。
first()、last()、startsWith()、chopped()、chop()、truncate()も参照 。
QByteArray QByteArray::right(qsizetype len) &&
QByteArray QByteArray::right(qsizetype len) const &
このバイト配列の最後のlen バイトを含むバイト配列を返します。
もしlen が範囲外であってはならないことがわかっている場合、新しいコードでは代わりにlast ()を使用すると高速である。
len がsize() より大きい場合は、バイト配列全体が返される。
len が 0 より小さい場合は、空のQByteArray を返す。
endsWith()、last()、first()、sliced()、chopped()、chop()、truncate()、slice()も参照 。
QByteArray QByteArray::mid(qsizetype pos, qsizetype len = -1) &&
QByteArray QByteArray::mid(qsizetype pos, qsizetype len = -1) const &
このバイト配列から、pos の位置から始まるlen バイトを含むバイト配列を返す。
pos とlen が範囲外であってはならないことがわかっている場合、新しいコードではsliced() を代わりに使用する。
len が-1(デフォルト)の場合、またはpos +len >=size()の場合、位置pos からバイト配列の終わりまでのすべてのバイトを含むバイト配列を返す。
first()、last()、sliced()、chopped()、chop()、truncate()、slice()も参照のこと 。
[since 6.0]
QByteArray QByteArray::first(qsizetype n) &&
[since 6.0]
QByteArray QByteArray::first(qsizetype n) const &
バイト配列の最初のn バイトを返します。
注意: n < 0 またはn >size() の場合の動作は未定義。
例
QByteArray x("Pineapple"); QByteArray y = x.first(4); // y == "Pine"
この関数は Qt 6.0 で導入されました。
last(),sliced(),startsWith(),chopped(),chop(),truncate(),slice()も参照してください 。
[since 6.0]
QByteArray QByteArray::last(qsizetype n) &&
[since 6.0]
QByteArray QByteArray::last(qsizetype n) const &
バイト配列の最後のn バイトを返します。
注意: n < 0 またはn >size() の場合の動作は未定義。
例
QByteArray x("Pineapple"); QByteArray y = x.last(5); // y == "apple"
この関数は Qt 6.0 で導入されました。
first(),sliced(),endsWith(),chopped(),chop(),truncate(),slice()も参照してください 。
[since 6.0]
QByteArray QByteArray::sliced(qsizetype pos, qsizetype n) &&
[since 6.0]
QByteArray QByteArray::sliced(qsizetype pos, qsizetype n) const &
pos の位置から始まる、このオブジェクトのn バイトを含むバイト配列を返します。
注意: pos < 0、n < 0、またはpos +n >size() の場合、動作は未定義。
例
QByteArray x("Five pineapples"); QByteArray y = x.sliced(5, 4); // y == "pine" QByteArray z = x.sliced(5); // z == "pineapples"
この関数は Qt 6.0 で導入されました。
first(),last(),chopped(),chop(),truncate(),slice()も参照してください 。
[since 6.0]
QByteArray QByteArray::sliced(qsizetype pos) &&
[since 6.0]
QByteArray QByteArray::sliced(qsizetype pos) const &
これはオーバーロードされた関数です。
このオブジェクトの位置pos から始まり、このオブジェクトの終わりまでのバイトを含むバイト配列を返します。
注: pos < 0 またはpos >size() の場合の動作は未定義です。
この関数は Qt 6.0 で導入されました。
first(),last(),chopped(),chop(),truncate(),slice()も参照してください 。
QByteArray QByteArray::chopped(qsizetype len) &&
QByteArray QByteArray::chopped(qsizetype len) const &
このバイト配列の左端size() -len バイトを含むバイト配列を返します。
注意: len が負またはsize() より大きい場合、動作は未定義である。
endsWith()、first()、last()、sliced()、chop()、truncate()、slice()も参照 。
[static]
QByteArray::FromBase64Result QByteArray::fromBase64Encoding(QByteArray &&base64, QByteArray::Base64Options options = Base64Encoding)
[static]
QByteArray::FromBase64Result QByteArray::fromBase64Encoding(const QByteArray &base64, QByteArray::Base64Options options = Base64Encoding)
これはオーバーロードされた関数です。
options で定義されたオプションを使用して、Base64 配列base64 をデコードします。options がIgnoreBase64DecodingErrors
を含む場合(デフォルト)、入力の有効性はチェックされません。入力中の無効な文字はスキップされ、それ以降の文字でデコード処理を続行できるようになります。options にAbortOnBase64DecodingErrors
が含まれている場合、デコードは最初の無効な文字で停止する。
例えば
void process(const QByteArray &); if (auto result = QByteArray::fromBase64Encoding(encodedData)) process(*result);
Base64エンコードされたデータのデコードに使用されるアルゴリズムは、RFC 4648で定義されている。
QByteArrayFromBase64Resultオブジェクトを返し、デコードされたデータと、デコードが成功したかどうかを示すフラグを含む。AbortOnBase64DecodingErrors
オプションが渡され、入力データが無効であった場合、 デコードされたデータに何が含まれているかは不明である。
toBase64()も参照 。
[constexpr noexcept]
QByteArray::QByteArray()
空のバイト配列を構築します。
isEmpty() も参照 。
QByteArray::QByteArray(const char *data, qsizetype size = -1)
配列data の先頭size バイトを含むバイト配列を構築する。
data が 0 の場合、空のバイト配列が構築されます。
size が負の場合、data は ' \0' 終端の文字列を指すものと見なされ、その長さは動的に決定されます。
QByteArray は文字列データの深いコピーを作成します。
fromRawData()も参照してください 。
QByteArray::QByteArray(qsizetype size, Qt::Initialization)
未初期化の内容を持つサイズsize のバイト配列を構築します。
QByteArray::QByteArray(qsizetype size, char ch)
各バイトがch に設定された、サイズsize のバイト配列を構築します。
fill()も参照してください 。
[noexcept]
QByteArray::QByteArray(const QByteArray &other)
other のコピーを構築する。
QByteArray は暗黙的に共有されるため、この操作には一定の時間がかかります。このため、関数からQByteArrayを返すのは非常に高速です。共有インスタンスが変更された場合、それはコピーされ(copy-on-write)、線形時間がかかります。
operator=()も参照してください 。
[noexcept]
QByteArray::QByteArray(QByteArray &&other)
Move-QByteArrayインスタンスを構築し、other が指していたのと同じオブジェクトを指すようにします。
[noexcept]
QByteArray::~QByteArray()
バイト配列を破棄する。
QByteArray &QByteArray::append(const QByteArray &ba)
バイト配列ba をこのバイト配列の末尾に追加します。
例:
QByteArray x("free"); QByteArray y("dom"); x.append(y); // x == "freedom"
これは、insert(size(),ba) と同じである。
注意:QByteArray は暗黙の共有クラスです。そのため、空のバイト配列に追加した場合、そのバイト配列はba に保持されているデータを共有するだけです。 この場合、データのコピーは行われず、一定の時間がかかります。共有インスタンスが変更された場合、そのインスタンスはコピーされ(コピーオンライト)、線形時間がかかる。
追加先のバイト配列が空でない場合、データのディープコピーが実行され、線形時間がかかる。
append()関数は通常、非常に高速(定数時間)である。これは、QByteArray がデータの末尾に余分な領域を事前に確保するため、毎回配列全体を再割り当てすることなくデータを増やすことができるからである。
operator+=()、prepend()、insert()も参照の こと。
QByteArray &QByteArray::append(QByteArrayView data)
これはオーバーロードされた関数です。
このバイト配列にdata を追加します。
QByteArray &QByteArray::append(char ch)
これはオーバーロードされた関数です。
バイトch をバイト配列に追加します。
QByteArray &QByteArray::append(const char *str)
これはオーバーロードされた関数です。
バイト配列に'˶0'終端の文字列str を追加します。
QByteArray &QByteArray::append(const char *str, qsizetype len)
これはオーバーロードされた関数です。
str から始まる最初のlen バイトをこのバイト配列に追加し、このバイト配列への参照を返します。追加されるバイトには'˶0'バイトが含まれる場合があります。
len が負の場合、str は ' \0' 終端の文字列と見なされ、コピーされる長さはqstrlen() を使用して自動的に決定されます。
len が 0 またはstr が NULL の場合、バイト配列には何も追加されません。len がstr よりも長くないことを確認すること。
QByteArray &QByteArray::append(qsizetype count, char ch)
これはオーバーロードされた関数である。
バイトch のコピーcount をこのバイト配列に追加し、このバイト配列への参照を返します。
count が負またはゼロの場合、バイト配列には何も追加されません。
[since 6.6]
QByteArray &QByteArray::assign(QByteArrayView v)
このバイト配列の内容をv のコピーで置き換え、このバイト配列への参照を返す。
このバイト配列のサイズはv のサイズに等しくなる。
この関数は、v のサイズがこのバイト配列の容量を超えるか、このバイト配列が共有されている場合にのみ、メモリを確保します。
この関数は Qt 6.6 で導入されました。
[since 6.6]
template <typename InputIterator, QByteArray::if_input_iterator<InputIterator> = true> QByteArray &QByteArray::assign(InputIterator first, InputIterator last)
このバイト配列の内容を、イテレータ範囲 [first,last] 内の要素のコピーで置き換え、このバイト配列への参照を返します。
このバイト配列のサイズは、範囲 [first,last] 内の要素数に等しくなります。
この関数は、範囲内の要素数がこのバイト配列の容量を超えるか、このバイト配列が共有されている場合にのみ、メモリを確保します。
注意 :この関数のオーバーロードは、InputIterator
がLegacyInputIteratorの要件を満たす場合にのみ、オーバーロード解決に参加します。
注: 引数のいずれかが *this へのイテレータであるか、または [first,last] が有効な範囲でない場合、動作は未定義です。
この関数は Qt 6.6 で導入されました。
[since 6.6]
QByteArray &QByteArray::assign(qsizetype n, char c)
このバイト配列の内容をc のn コピーで置き換え、このバイト配列への参照を返します。
このバイト配列のサイズはn に等しく、負であってはなりません。
この関数は、n がこのバイト配列の容量を超えるか、このバイト配列が共有されている場合にのみ、メモリを割り当てます。
この関数は Qt 6.6 で導入されました。
fill()も参照してください 。
char QByteArray::at(qsizetype i) const
バイト配列のインデックス位置i にあるバイトを返します。
i は、バイト配列の有効なインデックス位置でなければなりません (つまり、0 <= < ())。i size
operator[]()も参照のこと 。
char &QByteArray::back()
バイト配列の最後のバイトへの参照を返します。operator[](size() - 1)
と同じ。
この関数は STL との互換性のために提供されています。
警告: 空のバイト配列に対してこの関数を呼び出すと、未定義の動作になります。
front()、at()、およびoperator[]()も参照してください 。
char QByteArray::back() const
バイト配列の最後のバイトを返します。at(size() - 1)
と同じ。
この関数は STL との互換性のために提供されています。
警告: 空のバイト配列に対してこの関数を呼び出すと、未定義の動作になります。
front()、at()、およびoperator[]()も参照してください 。
QByteArray::iterator QByteArray::begin()
バイト配列の先頭バイトを指すSTL形式のイテレータを返します。
警告: 警告: 返されたイテレータは、デタッチ時またはQByteArray が変更されると無効になります。
constBegin() およびend()も参照してください 。
[noexcept]
QByteArray::const_iterator QByteArray::begin() const
この関数は begin() をオーバーロードする。
qsizetype QByteArray::capacity() const
再割り当てを強制せずにバイト配列に格納できる最大バイト数を返します。
この関数の唯一の目的は、QByteArray のメモリ使用量を微調整する手段を提供することである。通常、この関数を呼び出す必要はほとんどない。バイト配列内のバイト数を知りたい場合は、size() を呼び出す。
注意: 静的に割り当てられたバイト配列は、それが空でなくても容量が0であることを報告します。
注意 :割り当てられたメモリブロック内の空き領域の位置は未定義である。つまり、空きメモリが常に初期化された要素の後に位置すると仮定してはならない。
[noexcept]
QByteArray::const_iterator QByteArray::cbegin() const
byte-arrayの最初のバイトを指す、STLスタイルのイテレータを返します。
警告: 警告: 返されたイテレータは、デタッチ時またはQByteArray が変更されると無効になります。
[noexcept]
QByteArray::const_iterator QByteArray::cend() const
byte-arrayの最後のbyteの直後を指すconstSTLスタイルのイテレータを返します。
警告: 警告: 返されたイテレータは、デタッチ時またはQByteArray が変更されると無効になります。
void QByteArray::chop(qsizetype n)
バイト配列の末尾からn バイトを削除する。
n がsize() より大きい場合、結果は空のバイト配列になります。
例:
QByteArray ba("STARTTLS\r\n"); ba.chop(2); // ba == "STARTTLS"
truncate ()、resize ()、first ()も参照して ください。
void QByteArray::clear()
バイト配列の内容を消去し、NULLにします。
[noexcept, since 6.0]
int QByteArray::compare(QByteArrayView bv, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
このQByteArray のソートが、QByteArrayView bv の前か、同じ位置か、後かに応じて、ゼロより小さい、等しい、または大きい整数を返す。比較は大文字小文字の区別cs に従って行われます。
この関数は Qt 6.0 で導入されました。
operator== およびCharacter Caseも参照してください 。
[noexcept]
QByteArray::const_iterator QByteArray::constBegin() const
byte-arrayの最初のバイトを指す、STLスタイルのイテレータを返します。
警告: 警告: 返されたイテレータは、デタッチ時またはQByteArray が変更されたときに無効になります。
[noexcept]
const char *QByteArray::constData() const
バイト配列に格納されている const データへのポインタを返します。このポインタを使用して、配列を構成するバイトにアクセスできます。QByteArray オブジェクトが生データから作成されていない限り、データは ' \0' 終端です。
デタッチが起こらず、QByteArray が変更されない限り、ポインタは有効なままです。
この関数は、const char *
を受け取る関数にバイト配列を渡すのに便利です。
注意:QByteArray には ' \0' を含む任意のバイト値を格納することができますが、char *
引数を受け取るほとんどの関数は、最初に遭遇した ' \0' でデータが終了するとみなします。
data()、operator[]()、fromRawData()も参照してください 。
[noexcept]
QByteArray::const_iterator QByteArray::constEnd() const
byte-arrayの最後のバイトの直後を指すSTLスタイルのイテレータを返します。
警告: 警告: 返されたイテレータは、デタッチ時またはQByteArray が変更されたときに無効になります。
constBegin() およびend()も参照 。
[since 6.0]
bool QByteArray::contains(QByteArrayView bv) const
このバイト配列がbv で見たバイト列を含んでいる場合はtrue
を返し、そうでない場合はfalse
を返します。
この関数は Qt 6.0 で導入されました。
indexOf() およびcount()も参照してください 。
bool QByteArray::contains(char ch) const
これはオーバーロードされた関数です。
バイト配列がバイトch を含んでいる場合はtrue
を返し、そうでない場合はfalse
を返します。
[since 6.0]
qsizetype QByteArray::count(QByteArrayView bv) const
このバイト配列で、bv によって表示されるバイト列の(重複している可能性のある)出現回数を返します。
この関数は Qt 6.0 で導入されました。
contains() およびindexOf()も参照してください 。
qsizetype QByteArray::count(char ch) const
これはオーバーロードされた関数です。
バイト配列内のバイトch の出現回数を返します。
contains() およびindexOf()も参照して ください。
[noexcept]
QByteArray::const_reverse_iterator QByteArray::crbegin() const
バイト配列の先頭バイトを逆順で指す、STL形式の逆イテレータを返します。
警告: 警告: 返されたイテレータは、デタッチ時またはQByteArray が変更されると無効になります。
[noexcept]
QByteArray::const_reverse_iterator QByteArray::crend() const
byte-arrayの最後のバイトの直後を逆順に指す、STLスタイルの逆順イテレータを返します。
警告: 警告: 返されたイテレータは、デタッチ時またはQByteArray が変更されたときに無効になります。
char *QByteArray::data()
バイト配列に格納されているデータへのポインタを返します。このポインタを使用して、 配列を構成するバイトにアクセスしたり変更したりできます。つまり、返されたポインタに続いてアクセスできるバイト数は、' \0'ターミネー タを含めてsize() + 1 になります。
例
QByteArray ba("Hello world"); char *data = ba.data(); while (*data) { cout << "[" << *data << "]" << endl; ++data; }
例:デタッチが起こらず、QByteArray が変更されない限り、ポインタは有効です。
読み取り専用アクセスでは、constData() の方がディープコピーが発生しないため高速です。
この関数は、const char *
を受け取る関数にバイト配列を渡す場合に便利である。
以下の例では、data()が返すchar*のコピーを作成しますが、末尾の'˶0'用のバイトを 割り当てていないため、ヒープが破損してクラッシュを引き起こします:
QString tmp = "test"; QByteArray text = tmp.toLocal8Bit(); char *data = new char[text.size()]; strcpy(data, text.data()); delete [] data;
これは正しい容量を割り当てます:
QString tmp = "test"; QByteArray text = tmp.toLocal8Bit(); char *data = new char[text.size() + 1]; strcpy(data, text.data()); delete [] data;
注:QByteArray は ' \0' を含む任意のバイト値を格納できますが、char *
引数を取るほとんどの関数は、最初に出会った ' \0' でデータが終了すると仮定します。
constData() およびoperator[]()も参照して ください。
[noexcept]
const char *QByteArray::data() const
これはオーバーロードされた関数です。
QByteArray::iterator QByteArray::end()
バイト配列の最後のバイトの直後を指すSTL 形式のイテレータを返します。
警告: 警告:返されたイテレータは、デタッチ時またはQByteArray が変更されたときに無効になります。
begin() およびconstEnd()も参照してください 。
[noexcept]
QByteArray::const_iterator QByteArray::end() const
この関数は、end()をオーバーロードします。
[since 6.0]
bool QByteArray::endsWith(QByteArrayView bv) const
このバイト配列がbv で見たバイト列で終わっている場合はtrue
を返し、そうでない場合はfalse
を返す。
例を示します:
QByteArray url("http://qt-project.org/doc/qt-5.0/qtdoc/index.html"); if (url.endsWith(".html")) ...
この関数は Qt 6.0 で導入されました。
startsWith() およびlast()も参照してください 。
bool QByteArray::endsWith(char ch) const
これはオーバーロードされた関数です。
このバイト配列がバイトch で終わっている場合はtrue
を返し、そうでない場合はfalse
を返します。
[since 6.1]
QByteArray::iterator QByteArray::erase(QByteArray::const_iterator first, QByteArray::const_iterator last)
バイト配列から、半角範囲 [first,last ] 内の文字を削除します。消去前のlast で参照される文字へのイテレータを返します。
この関数は Qt 6.1 で導入されました。
[since 6.5]
QByteArray::iterator QByteArray::erase(QByteArray::const_iterator it)
これはオーバーロードされた関数です。
バイト配列からit
で示される文字を削除します。消去された文字の直後の文字へのイテレータを返します。
QByteArray ba = "abcdefg"; auto it = ba.erase(ba.cbegin()); // ba is now "bcdefg" and it points to "b"
この関数は Qt 6.5 で導入されました。
QByteArray &QByteArray::fill(char ch, qsizetype size = -1)
バイト配列の各バイトをch に設定します。size が -1 以外(デフォルト)の場合、バイト配列はあらかじめサイズsize にリサイズされます。
例:
QByteArray ba("Istambul"); ba.fill('o'); // ba == "oooooooo" ba.fill('X', 2); // ba == "XX"
resize()も参照のこと 。
[static]
QByteArray QByteArray::fromBase64(const QByteArray &base64, QByteArray::Base64Options options = Base64Encoding)
options で定義されたオプションを使用して、Base64 配列base64 をデコードしたコピーを返します。options にIgnoreBase64DecodingErrors
が含まれている場合 (デフォルト)、入力の有効性はチェックされない。 入力中の無効な文字はスキップされ、それ以降の文字でデコード処理を続行できるようになる。options にAbortOnBase64DecodingErrors
が含まれている場合、デコードは最初の無効な文字で停止する。
例えば
QByteArray text = QByteArray::fromBase64("UXQgaXMgZ3JlYXQh"); text.data(); // returns "Qt is great!" QByteArray::fromBase64("PHA+SGVsbG8/PC9wPg==", QByteArray::Base64Encoding); // returns "<p>Hello?</p>" QByteArray::fromBase64("PHA-SGVsbG8_PC9wPg==", QByteArray::Base64UrlEncoding); // returns "<p>Hello?</p>"
Base64エンコードされたデータのデコードに使われるアルゴリズムは、RFC 4648で定義されている。
デコードされたデータを返すか、AbortOnBase64DecodingErrors
オプションが渡され、入力データが無効だった場合は空のバイト配列を返す。
注: fromBase64Encoding ()関数は、新しいコードで使用することを推奨する。
toBase64() およびfromBase64Encoding()も参照 。
[static]
QByteArray QByteArray::fromCFData(CFDataRef data)
CFDatadata のコピーを含む新しいQByteArray を構築する。
fromRawCFData()、fromRawData()、toRawCFData()、toCFData()も参照 。
[static, since 6.5]
QByteArray QByteArray::fromEcmaUint8Array(emscripten::val uint8array)
Uint8Arrayuint8array のコピーを含む新しいQByteArray を構築します。
この関数は、C++ コードからはアドレス指定できない JavaScript データ・バッファから、QByteArray が所有するヒープ・メモリにデータを転送します。この関数が戻り、コピーが作成されると、Uint8Array を解放できます。
引数uint8array は Uint8Array オブジェクトを参照する emscripten::val でなければなりません:
emscripten::val uint8array = emscripten::val::global("g_uint8array"); QByteArray byteArray = QByteArray::fromEcmaUint8Array(uint8array);
Uint8Array のサイズがQByteArray の最大容量を超える場合、またはuint8array の引数が Uint8Array 型でない場合、この関数は nullQByteArray を返します。
この関数は Qt 6.5 で導入されました。
toEcmaUint8Array()も参照してください 。
[static]
QByteArray QByteArray::fromHex(const QByteArray &hexEncoded)
16進エンコードされた配列hexEncoded のデコードコピーを返します。入力の有効性はチェックされません。入力中の無効な文字はスキップされ、それ以降の文字でデコード処理を続けることができます。
入力中の無効な文字はスキップされる:
QByteArray text = QByteArray::fromHex("517420697320677265617421"); text.data(); // returns "Qt is great!"
toHex()も参照 。
[static]
QByteArray QByteArray::fromNSData(const NSData *data)
NSDatadata のコピーを含む新しいQByteArray を構築する。
fromRawNSData()、fromRawData()、toNSData()、toRawNSData()も参照 。
[static]
QByteArray QByteArray::fromPercentEncoding(const QByteArray &input, char percent = '%')
URI/URL 形式のパーセントエンコードからinput をデコードする。
デコードされたテキストを含むバイト配列を返す。percent パラメータでは、'%' とは異なる文字 (たとえば '_' や '=') をエスケープ文字として使うことができる。percentDecoded (パーセント)。
例えば
QByteArray text = QByteArray::fromPercentEncoding("Qt%20is%20great%33"); qDebug("%s", text.data()); // reports "Qt is great!"
percentDecoded()も参照のこと 。
[static]
QByteArray QByteArray::fromRawCFData(CFDataRef data)
CFDatadata のバイトを使用するQByteArray を構築する。
data のバイトはコピーされない。
呼び出し元は、このQByteArray オブジェクトが存在する限り、CFData が削除または変更されないことを保証する。
fromCFData()、fromRawData()、toRawCFData()、toCFData()も参照 。
[static]
QByteArray QByteArray::fromRawData(const char *data, qsizetype size)
data 配列の最初のsize バイトを使用するQByteArray を構築する。バイトはコピーされない。QByteArray にはdata ポインタが格納される。呼び出し元は、このQByteArray と、変更されていないそのコピーが存在する限り、data が削除されたり変更されたりしないことを保証する。言い換えると、QByteArray は暗黙の共有クラスであり、この関数が返すインスタンスにはdata ポインタが含まれるため、呼び出し元は、返されたQByteArray とそのコピーが存在する限り、data を削除したり、直接変更したりしてはならない。ただし、QByteArray はdata の所有権を持たないため、QByteArray デストラクタは、data を参照している最後のQByteArray が破棄された場合でも、生のdata を削除することはありません。
その後、返されたQByteArray の内容や、そこから作成されたコピーを変更しようとすると、変更する前にdata 配列のディープコピーが作成される。これにより、生のdata 配列自体がQByteArray によって変更されることはない。
以下は、QByteArray に生データをコピーすることなく、QDataStream を使ってメモリ上の生データからデータを読み取る方法の例である:
static const char mydata[] = { '\x00', '\x00', '\x03', '\x84', '\x78', '\x9c', '\x3b', '\x76', '\xec', '\x18', '\xc3', '\x31', '\x0a', '\xf1', '\xcc', '\x99', ... '\x6d', '\x5b' }; QByteArray data = QByteArray::fromRawData(mydata, sizeof(mydata)); QDataStream in(&data, QIODevice::ReadOnly); ...
警告: fromRawData()で作成されたバイト配列は、生データがsize の位置に '˶'0'バイトを含んでいない限り、'˶'0'終端されません。QDataStream やindexOf() のような関数では問題ありませんが、' \0'終端であることが期待されるconst char *
を受け付ける関数にバイト配列を渡すと失敗します。
setRawData()、data()、およびconstData()も参照して ください。
[static]
QByteArray QByteArray::fromRawNSData(const NSData *data)
NSDatadata のバイトを使用するQByteArray を構築します。
data のバイトはコピーされない。
呼び出し元は、このQByteArray オブジェクトが存在する限り、 NSData が削除または変更されないことを保証する。
fromNSData()、fromRawData()、toRawNSData()、toNSData()も参照のこと 。
[static]
QByteArray QByteArray::fromStdString(const std::string &str)
str 文字列のコピーをQByteArray として返す。
toStdString() およびQString::fromStdString()も参照 。
char &QByteArray::front()
バイト配列の先頭バイトへの参照を返します。operator[](0)
と同じ。
この関数は、STL との互換性のために用意されています。
警告: 空のバイト配列に対してこの関数を呼び出すと、未定義の動作になります。
back()、at()、およびoperator[]()も参照してください 。
char QByteArray::front() const
バイト配列の先頭バイトを返します。at(0)
と同じ。
この関数は STL との互換性のために用意されています。
警告: 空のバイト配列に対してこの関数を呼び出すと、未定義の動作になります。
back()、at()、およびoperator[]()も参照してください 。
[since 6.0]
qsizetype QByteArray::indexOf(QByteArrayView bv, qsizetype from = 0) const
このバイト配列において、bv で表示されるバイト列の最初の出現箇所のインデックス位置を返します。インデックス位置from から前方に向かって検索します。一致しない場合は -1 を返す。
例
QByteArray x("sticky question"); QByteArrayView y("sti"); x.indexOf(y); // returns 0 x.indexOf(y, 1); // returns 10 x.indexOf(y, 10); // returns 10 x.indexOf(y, 11); // returns -1
この関数は Qt 6.0 で導入されました。
lastIndexOf(),contains(),count()も参照してください 。
qsizetype QByteArray::indexOf(char ch, qsizetype from = 0) const
これはオーバーロードされた関数です。
インデックス位置from から前方を検索して、このバイト配列で最初に出現するバイトch の開始のインデックス位置を返します。一致しない場合は -1 を返します。
例:
QByteArray ba("ABCBA"); ba.indexOf("B"); // returns 1 ba.indexOf("B", 1); // returns 1 ba.indexOf("B", 2); // returns 3 ba.indexOf("X"); // returns -1
lastIndexOf() およびcontains()も参照 。
[since 6.0]
QByteArray &QByteArray::insert(qsizetype i, QByteArrayView data)
インデックス位置i にdata を挿入し、このバイト配列への参照を返す。
例
QByteArray ba("Meal"); ba.insert(1, QByteArrayView("ontr")); // ba == "Montreal"
例: 大きなバイト配列の場合、この操作は遅い(線形時間)ことがあります。これは、インデックスi 以上のすべてのバイトを、メモリ上で少なくとも 1 つ先の位置に移動する必要があるためです。
この配列は、挿入に対応して大きくなる。i が配列の終端を超えている場合、配列はまずスペース文字で拡張され、このi に到達します。
この関数は Qt 6.0 で導入されました。
append(),prepend(),replace(),remove()も参照してください 。
QByteArray &QByteArray::insert(qsizetype i, const QByteArray &data)
インデックス位置i にdata を挿入し、このバイト配列への参照を返します。
この配列は、挿入に合わせて大きくなる。i が配列の終端を超えている場合、配列はまずスペース文字で拡張され、i に到達する。
append()、prepend()、replace()、remove()も参照のこと 。
QByteArray &QByteArray::insert(qsizetype i, const char *s)
インデックス位置i にs を挿入し、このバイト配列への参照を返す。
この配列は、挿入に合わせて大きくなる。i が配列の終端を超えている場合、配列はまずスペース文字で拡張され、このi に到達する。
この関数は以下と等価である。insert(i, QByteArrayView(s))
append()、prepend()、replace()、remove()も参照のこと 。
QByteArray &QByteArray::insert(qsizetype i, char ch)
これはオーバーロードされた関数です。
バイト配列のインデックス位置i にバイトch を挿入します。
この配列は挿入に合わせて大きくなる。i が配列の終端を超えている場合、配列はまずスペース文字で拡張され、このi に到達する。
QByteArray &QByteArray::insert(qsizetype i, const char *data, qsizetype len)
これはオーバーロードされた関数である。
バイト配列の位置i に、data から始まるlen バイトを挿入する。
この配列は挿入に合わせて拡張される。i が配列の終端を超えている場合、配列はまずスペース文字で拡張され、i に到達する。
QByteArray &QByteArray::insert(qsizetype i, qsizetype count, char ch)
これはオーバーロードされた関数である。
バイト配列のインデックス位置i に、バイトch のコピーcount を挿入する。
この配列は挿入に合わせて拡張される。i が配列の終端を超えている場合、配列はまずスペース文字で拡張され、このi に到達する。
[noexcept]
bool QByteArray::isEmpty() const
バイト配列のサイズが0の場合はtrue
を返し、それ以外の場合はfalse
を返す。
それ以外の場合は を返す:
QByteArray().isEmpty(); // returns true QByteArray("").isEmpty(); // returns true QByteArray("abc").isEmpty(); // returns false
size()も参照のこと 。
bool QByteArray::isLower() const
このバイト配列が小文字の場合、つまりtoLower() の折りたたみと同じ場合はtrue
を返す。
これは、バイト配列が小文字のみを含むという意味ではなく、 ASCIIの大文字を含まないという意味であることに注意。
[noexcept]
bool QByteArray::isNull() const
このバイト配列がNULLの場合はtrue
を返し、そうでない場合はfalse
を返す。
それ以外の場合は を返します:
QByteArray().isNull(); // returns true QByteArray("").isNull(); // returns false QByteArray("abc").isNull(); // returns false
例: Qtでは、歴史的な理由からNULLバイト配列と空のバイト配列を区別しています。ほとんどのアプリケーションで重要なのは、バイト配列にデータが含まれているかどうかであり、これはisEmpty() を使用して判断できます。
isEmpty()も参照 。
bool QByteArray::isUpper() const
このバイト配列が大文字の場合、つまりtoUpper() の折りたたみと同じ場合はtrue
を返す。
これは、バイト配列が大文字のみを含むという意味ではなく、 ASCII の小文字を含まないという意味であることに注意。
[noexcept, since 6.3]
bool QByteArray::isValidUtf8() const
このバイト配列が有効な UTF-8 エンコード・データを含んでいる場合はtrue
を、そうでない場合はfalse
を返します。
この関数は Qt 6.3 で導入されました。
[since 6.0]
qsizetype QByteArray::lastIndexOf(QByteArrayView bv, qsizetype from) const
from のインデックス位置から後方へ検索して、このバイト配列のbv で表示されるバイト列の最後の出現の開始のインデックス位置を返します。
from が -1 の場合、検索は最後の文字から始まり、-2 の場合、最後から次の文字から始まります。
一致しない場合は-1を返す。
例
QByteArray x("crazy azimuths"); QByteArrayView y("az"); x.lastIndexOf(y); // returns 6 x.lastIndexOf(y, 6); // returns 6 x.lastIndexOf(y, 5); // returns 2 x.lastIndexOf(y, 1); // returns -1
注意: 長さ 0 のbv を検索する場合、-1
は通常バイト配列の最後から検索すると考えられているにもかかわらず、負のfrom を指定することで、データの最後のマッチが検索から除外されます:最後のマッチは最後の文字の後なので、除外されます。このような最後の空のマッチを含めるには、from に正の値を与えるか、from パラメータを完全に省略します。
この関数はQt 6.0で導入されました。
indexOf(),contains(),count()も参照してください 。
[since 6.2]
qsizetype QByteArray::lastIndexOf(QByteArrayView bv) const
これはオーバーロードされた関数です。
バイト配列の末尾から後方へ検索して、bv によって表示されるバイト配列の最後の出現の開始のインデックス位置を返します。一致しない場合は-1を返す。
例
QByteArray x("crazy azimuths"); QByteArrayView y("az"); x.lastIndexOf(y); // returns 6 x.lastIndexOf(y, 6); // returns 6 x.lastIndexOf(y, 5); // returns 2 x.lastIndexOf(y, 1); // returns -1
この関数は Qt 6.2 で導入されました。
indexOf(),contains(),count()も参照してください 。
qsizetype QByteArray::lastIndexOf(char ch, qsizetype from = -1) const
これはオーバーロードされた関数です。
インデックス位置from から後方に検索して、このバイト配列内で最後に出現したバイトch の開始のインデックス位置を返します。from が -1(デフォルト)の場合、検索は最後のバイト(インデックスsize() - 1)から始まります。一致しない場合は -1 を返します。
例:
QByteArray ba("ABCBA"); ba.lastIndexOf("B"); // returns 3 ba.lastIndexOf("B", 3); // returns 3 ba.lastIndexOf("B", 2); // returns 1 ba.lastIndexOf("X"); // returns -1
QByteArray QByteArray::leftJustified(qsizetype width, char fill = ' ', bool truncate = false) const
fill バイトでパディングされたこのバイト配列を含む、サイズwidth のバイト配列を返す。
truncate が偽で、バイト配列のsize() がwidth より大きい場合、返されるバイト配列はこのバイト配列のコピーである。
truncate が真で、バイト配列のsize() がwidth よりも大きい場合、バイト配列のコピー内の位置width 以降のバイトは削除され、コピーが返される。
例:
QByteArray x("apple"); QByteArray y = x.leftJustified(8, '.'); // y == "apple..."
rightJustified()も参照 。
[noexcept]
qsizetype QByteArray::length() const
size() と同じ。
[static]
QByteArray QByteArray::number(int n, int base = 10)
整数n をテキストとして表すバイト配列を返す。
n を表す文字列を含むバイト配列を、指定されたbase (デフォルトでは 10)を用いて返します。2 から 36 までの基数をサポートし、9 を超える数字にはアルファベットを使用します。
例
int n = 63; QByteArray::number(n); // returns "63" QByteArray::number(n, 16); // returns "3f" QByteArray::number(n, 16).toUpper(); // returns "3F"
注: 数字の書式はローカライズされない。ユーザーのロケールに関係なく、デフォルトのCロケールが使用される。数値と文字列の間でロケールを意識した変換を行うには、QLocale を使用する。
[static]
QByteArray QByteArray::number(long n, int base = 10)
これはオーバーロードされた関数です。
toLong() も参照 。
[static]
QByteArray QByteArray::number(qlonglong n, int base = 10)
これはオーバーロードされた関数です。
toLongLong() も参照 。
[static]
QByteArray QByteArray::number(qulonglong n, int base = 10)
これはオーバーロードされた関数です。
toULongLong() も参照 。
[static]
QByteArray QByteArray::number(uint n, int base = 10)
これはオーバーロードされた関数です。
toUInt() も参照 。
[static]
QByteArray QByteArray::number(ulong n, int base = 10)
これはオーバーロードされた関数です。
toULong() も参照 。
[static]
QByteArray QByteArray::number(double n, char format = 'g', int precision = 6)
これはオーバーロードされた関数です。
浮動小数点数n をテキストとして表すバイト配列を返します。
n を表す文字列を含むバイト配列を返します。format およびprecision は、QString::number と同じ意味(double、char、int)です。例えば
QByteArray ba = QByteArray::number(12.3456, 'E', 3); // ba == 1.235E+01
toDouble() およびQLocale::FloatingPointPrecisionOptionも参照のこと 。
[since 6.4]
QByteArray QByteArray::percentDecoded(char percent = '%') const
URI/URLスタイルのパーセントエンコーディングをデコードします。
デコードされたテキストを含むバイト配列を返す。percent パラメータでは、エスケープ文字として '%' とは異なる文字 (たとえば '_' や '=') を使用できる。
例えば、以下のようになる:
QByteArray encoded("Qt%20is%20great%33"); QByteArray decoded = encoded.percentDecoded(); // Set to "Qt is great!"
注意: 無効な入力(有効な16進数ではない"%G5 "というシーケンスを含む文字列など)が与えられた場合、出力も同様に無効となる。例:"%G5 "というシーケンスは'W'にデコードされます。
この関数はQt 6.4で導入されました。
toPercentEncoding() およびQUrl::fromPercentEncoding()も参照してください 。
QByteArray &QByteArray::prepend(QByteArrayView ba)
バイト配列ビューba をこのバイト配列にプリペンドし、このバイト配列への参照を返します。
この操作は通常非常に高速(一定時間)です。これは、QByteArray がデータの先頭に余分な領域を事前確保するため、毎回配列全体を再割り当てすることなく成長できるからです。
例
QByteArray x("ship"); QByteArray y("air"); x.prepend(y); // x == "airship"
これは insert(0,ba) と同じである。
QByteArray &QByteArray::prepend(char ch)
これはオーバーロードされた関数です。
バイトch をこのバイト配列に追加します。
QByteArray &QByteArray::prepend(const QByteArray &ba)
これはオーバーロードされた関数です。
バイトba をこのバイト配列に追加する。
QByteArray &QByteArray::prepend(const char *str)
これはオーバーロードされた関数です。
バイト配列に'˶0'終端の文字列str を前置する。
QByteArray &QByteArray::prepend(const char *str, qsizetype len)
これはオーバーロードされた関数です。
str から始まるlen バイトをこのバイト配列に前置します。プリペンドされるバイトは、' \0'バイトを含んでもよい。
QByteArray &QByteArray::prepend(qsizetype count, char ch)
これはオーバーロードされた関数です。
ch バイトのcount コピーをこのバイト配列に追加します。
void QByteArray::push_back(const QByteArray &other)
この関数は STL との互換性のために提供されています。append(other) と同等です。
[since 6.0]
void QByteArray::push_back(QByteArrayView str)
これはオーバーロードされた関数です。
append(str) と同じです。
この関数は Qt 6.0 で導入されました。
void QByteArray::push_back(char ch)
オーバーロードされた関数です。
append(ch) と同じです。
void QByteArray::push_back(const char *str)
オーバーロードされた関数です。
append(str) と同じです。
void QByteArray::push_front(const QByteArray &other)
この関数は STL との互換性のために用意されています。prepend(other) と同等です。
[since 6.0]
void QByteArray::push_front(QByteArrayView str)
これはオーバーロードされた関数です。
prepend(str) と同じ。
この関数は Qt 6.0 で導入されました。
void QByteArray::push_front(char ch)
オーバーロードされた関数です。
prepend(ch) と同じ。
void QByteArray::push_front(const char *str)
これはオーバーロードされた関数です。
prepend(str) と同じ。
QByteArray::reverse_iterator QByteArray::rbegin()
バイト配列の先頭バイトを指すSTL 形式の逆順イテレータを返します。
警告: 警告: 返されたイテレータは、デタッチ時またはQByteArray が変更されたときに無効になります。
[noexcept]
QByteArray::const_reverse_iterator QByteArray::rbegin() const
これはオーバーロードされた関数です。
QByteArray &QByteArray::remove(qsizetype pos, qsizetype len)
インデックス位置pos から始まる配列からlen バイトを削除し、その配列への参照を返す。
pos が範囲外の場合、何も起こらない。pos は有効だが、pos +len が配列のサイズより大きい場合、配列はpos の位置で切り捨てられる。
例
QByteArray ba("Montreal"); ba.remove(1, 4); // ba == "Meal"
要素を削除しても配列の容量は維持され、割り当てられたメモリの量は減らない。余分な容量を削除し、できるだけ多くのメモリを解放するには、配列のサイズを最後に変更した後にsqueeze() をコールする。
insert()、replace()、squeeze()も参照 。
[since 6.5]
QByteArray &QByteArray::removeAt(qsizetype pos)
インデックスpos の文字を削除します。pos が範囲外の場合(つまりpos >=size() )、この関数は何もしません。
この関数は Qt 6.5 で導入されました。
remove()も参照してください 。
[since 6.5]
QByteArray &QByteArray::removeFirst()
バイト配列の最初の文字を削除します。バイト配列が空の場合、この関数は何もしません。
この関数は Qt 6.5 で導入されました。
remove()も参照して ください。
[since 6.1]
template <typename Predicate> QByteArray &QByteArray::removeIf(Predicate pred)
述語pred が真を返すすべてのバイトをバイト配列から削除します。バイト配列への参照を返します。
この関数は Qt 6.1 で導入されました。
remove()も参照してください 。
[since 6.5]
QByteArray &QByteArray::removeLast()
バイト配列の最後の文字を削除します。バイト配列が空の場合、この関数は何もしません。
この関数は Qt 6.5 で導入されました。
remove()も参照して ください。
QByteArray::reverse_iterator QByteArray::rend()
バイト配列の最後のバイトの直後を指す、STLスタイルの逆順イテレータを返します。
警告 警告: 返されたイテレータは、デタッチ時またはQByteArray が変更されたときに無効になります。
[noexcept]
QByteArray::const_reverse_iterator QByteArray::rend() const
これはオーバーロードされた関数です。
QByteArray QByteArray::repeated(qsizetype times) const
指定された数のtimes を繰り返したバイト配列のコピーを返す。
times が 1 未満の場合、空のバイト配列が返される。
例
QByteArray ba("ab"); ba.repeated(4); // returns "abababab"
QByteArray &QByteArray::replace(qsizetype pos, qsizetype len, QByteArrayView after)
インデックス位置pos からのlen バイトをバイト配列after で置き換え、このバイト配列への参照を返します。
例
QByteArray x("Say yes!"); QByteArray y("no"); x.replace(4, 3, y); // x == "Say no!"
[since 6.0]
QByteArray &QByteArray::replace(QByteArrayView before, QByteArrayView after)
これはオーバーロードされた関数です。
バイト配列before をバイト配列after で置き換えます。
例
QByteArray ba("colour behaviour flavour neighbour"); ba.replace(QByteArray("ou"), QByteArray("o")); // ba == "color behavior flavor neighbor"
この関数は Qt 6.0 で導入されました。
QByteArray &QByteArray::replace(char before, QByteArrayView after)
これはオーバーロードされた関数です。
バイトbefore をバイト配列after で置き換えます。
QByteArray &QByteArray::replace(char before, char after)
これはオーバーロードされた関数です。
バイトbefore をバイトafter で置き換えます。
QByteArray &QByteArray::replace(const char *before, qsizetype bsize, const char *after, qsizetype asize)
これはオーバーロードされた関数です。
before で始まるbsize バイトを、after で始まるasize バイトで置き換えます。文字列のサイズはbsize とasize で与えられるので、' \0'バイトを含んでいてもよく、' \0'終端である必要はありません。
QByteArray &QByteArray::replace(qsizetype pos, qsizetype len, const char *after, qsizetype alen)
これはオーバーロードされた関数です。
インデックス位置pos からのlen バイトを、位置after から始まるalen バイトで置き換える。挿入されるバイトには「'˶'0」バイトが含まれることがあります。
void QByteArray::reserve(qsizetype size)
少なくともsize バイト分のメモリを確保しようとします。
バイト配列のサイズが事前に分かっている場合は、この関数を呼び出すことができます。また、resize() を頻繁に呼び出すと、パフォーマンスが向上する可能性があります。
どれだけの容量が必要なのか疑わしい場合は、size のような上限値を使用するか、厳密な上限値を使用するとこれよりもはるかに大きくなる場合は、最も可能性の高いサイズの高い推定値を使用する方が通常はよい。size が過小見積もりである場合、予約されたサイズを超えると配列は必要に応じて大きくなり、過大見積もりよりも大きな割り当てになる可能性があります。
警告: reserve() はメモリを確保しますが、バイト配列のサイズは変更しません。バイト配列の終端を超えてデータにアクセスすることは、未定義の動作です。配列の現在の終端を超えてメモリにアクセスする必要がある場合は、resize() を使用してください。
この関数の唯一の目的は、QByteArray のメモリ使用量を微調整する手段を提供することである。通常、この関数を呼び出す必要はほとんどない。
void QByteArray::resize(qsizetype size)
バイト配列のサイズをsize バイトに設定する。
size が現在のサイズより大きい場合、バイト配列はsize バイトに拡張され、末尾に余分なバイトが追加される。新しいバイトは初期化されない。
size が現在のサイズより小さい場合、位置size を超えるバイトはバイト配列から除外される。
注意: resize()は必要に応じて容量を増やすが、容量を減らすことはない。余分な容量を削除するには、squeeze() を使用する。
size()、truncate()、squeeze()も参照のこと 。
[since 6.4]
void QByteArray::resize(qsizetype newSize, char c)
バイト配列のサイズをnewSize バイトに設定する。
newSize が現在のサイズより大きい場合、バイト配列はnewSize バイトに拡張され、余分なバイトが最後に追加される。新しいバイトはc に初期化される。
newSize が現在のサイズより小さい場合、位置newSize を超えるバイトはバイト配列から除外される。
注意: resize()は必要に応じて容量を増やすが、容量を減らすことはない。余分な容量を削除するには、squeeze() を使用してください。
この関数は Qt 6.4 で導入されました。
size(),truncate(),squeeze()も参照してください 。
[since 6.8]
void QByteArray::resizeForOverwrite(qsizetype size)
バイト配列をsize バイトにリサイズします。バイト配列のサイズが大きくなった場合、新しいバイトは初期化されません。
動作はresize(size)
と同じです。
この関数は Qt 6.8 で導入されました。
resize()も参照してください 。
QByteArray QByteArray::rightJustified(qsizetype width, char fill = ' ', bool truncate = false) const
このバイト配列に続くfill バイトを含む、サイズwidth のバイト配列を返します。
truncate が偽で、バイト配列のサイズがwidth より大きい場合、返されるバイト配列はこのバイト配列のコピーです。
truncate が真で、バイト配列のサイズがwidth より大きい場合、返されるバイト配列はwidth の位置で切り捨てられる。
例:
QByteArray x("apple"); QByteArray y = x.rightJustified(8, '.'); // y == "...apple"
leftJustified()も参照のこと 。
QByteArray &QByteArray::setNum(int n, int base = 10)
整数n をテキストとして表現する。
このバイト配列を、base (デフォルトでは10)を基数としてn を表す文字列に設定し、このバイト配列への参照を返します。2 から 36 までの基数をサポートし、9 以降の数字にはアルファベットを使用します。
例
QByteArray ba; int n = 63; ba.setNum(n); // ba == "63" ba.setNum(n, 16); // ba == "3f"
注: 数値の書式はローカライズされない。ユーザーのロケールに関係なく、デフォルトのCロケールが使用される。数値と文字列の間でロケールを意識した変換を行うには、QLocale を使用する。
QByteArray &QByteArray::setNum(long n, int base = 10)
これはオーバーロードされた関数です。
toLong() も参照 。
QByteArray &QByteArray::setNum(qlonglong n, int base = 10)
これはオーバーロードされた関数です。
toLongLong() も参照 。
QByteArray &QByteArray::setNum(qulonglong n, int base = 10)
これはオーバーロードされた関数です。
toULongLong() も参照 。
QByteArray &QByteArray::setNum(short n, int base = 10)
これはオーバーロードされた関数です。
toShort() も参照 。
QByteArray &QByteArray::setNum(uint n, int base = 10)
これはオーバーロードされた関数です。
toUInt() も参照 。
QByteArray &QByteArray::setNum(ulong n, int base = 10)
これはオーバーロードされた関数です。
toULong() も参照 。
QByteArray &QByteArray::setNum(ushort n, int base = 10)
これはオーバーロードされた関数です。
toUShort() も参照 。
QByteArray &QByteArray::setNum(double n, char format = 'g', int precision = 6)
これはオーバーロードされた関数です。
浮動小数点数n をテキストとして表現する。
このバイト配列を、与えられたformat とprecision (QString::number (double、char、int)と同じ意味を持つ)で、n を表す文字列に設定し、このバイト配列への参照を返します。
toDouble() およびQLocale::FloatingPointPrecisionOptionも参照のこと 。
QByteArray &QByteArray::setNum(float n, char format = 'g', int precision = 6)
これはオーバーロードされた関数である。
浮動小数点数n をテキストとして表現する。
このバイト配列を、指定されたformat とprecision (QString::number(double, char, int)と同じ意味)を持つn を表す文字列に設定し、このバイト配列への参照を返します。
toFloat()も参照のこと 。
QByteArray &QByteArray::setRawData(const char *data, qsizetype size)
data 配列の最初のsize バイトを使用するようにQByteArray をリセットします。バイトはコピーされない。QByteArray にはdata ポインタが格納される。呼び出し元は、このQByteArray と、変更されていないそのコピーが存在する限り、data が削除されたり変更されたりしないことを保証する。
この関数は、fromRawData() の代わりに使用して、既存のQByteArray オブジェクトを再利用し、メモリの再割り当てを節約することができる。
fromRawData()、data()、constData()も参照 。
void QByteArray::shrink_to_fit()
この関数は、STL互換のために用意されています。squeeze() と同等です。
QByteArray QByteArray::simplified() const
このバイト配列の先頭と末尾のスペーシング文字を削除し、内部のスペーシング文字列を1つのスペースに置き換えたコピーを返します。
スペーシング文字は、標準 C++isspace()
関数が C ロケールでtrue
を返す文字です。これらは、ASCII 文字のタブ ' \t'、改行 '˶n'、キャリッジリターン '˶r'、垂直タブ '˶v'、フォームフィード '˶f'、スペース ' です。
例
QByteArray ba(" lots\t of\nwhitespace\r\n "); ba = ba.simplified(); // ba == "lots of whitespace";
trimmed()、QChar::SpecialCharacter 、およびSpacing Charactersも参照してください 。
[noexcept]
qsizetype QByteArray::size() const
バイト配列のバイト数を返します。
バイト配列の最後のバイトは size() - 1 の位置にあります。また、QByteArray は size() の位置のバイトが常に ' \0' であることを保証するので、data() とconstData() の返り値を ' \0' 終端の文字列を予期する関数の引数として使用できます。QByteArray オブジェクトが、末尾の'˶0'終端バイトを含まないraw data から作成された場合、ディープコピーが作成されない限り、QByteArray は自動的にそれを追加しません。
例:
QByteArray ba("Hello"); qsizetype n = ba.size(); // n == 5 ba.data()[0]; // returns 'H' ba.data()[4]; // returns 'o' ba.data()[5]; // returns '\0'
isEmpty() およびresize()も参照してください 。
[since 6.8]
QByteArray &QByteArray::slice(qsizetype pos, qsizetype n)
このバイト配列をpos の位置から開始するように変更し、n バイト分拡張して、このバイト配列への参照を返します。
注意: pos < 0、n < 0、またはpos +n >size() の場合、動作は未定義である。
例
QByteArray x = "Five pineapples"_ba; x.slice(5); // x == "pineapples" x.slice(4, 3); // x == "app"
この関数は Qt 6.8 で導入されました。
sliced(),first(),last(),chopped(),chop(),truncate()も参照してください 。
[since 6.8]
QByteArray &QByteArray::slice(qsizetype pos)
これはオーバーロードされた関数です。
このバイト配列をpos の位置から開始し、末尾まで拡張するように変更し、このバイト配列への参照を返します。
注意: pos < 0 またはpos >size() の場合の動作は未定義です。
この関数は Qt 6.8 で導入されました。
sliced(),first(),last(),chopped(),chop(),truncate()も参照してください 。
QList<QByteArray> QByteArray::split(char sep) const
sep が出現する箇所でバイト配列を部分配列に分割し、それらの配列のリストを返します。sep がバイト配列のどこにもマッチしない場合、 split() はこのバイト配列を含む単一要素のリストを返す。
void QByteArray::squeeze()
配列のデータを格納する必要のないメモリを解放する。
この関数の唯一の目的は、QByteArray のメモリ使用量を微調整する手段を提供することである。通常、この関数を呼び出す必要はほとんどありません。
[since 6.0]
bool QByteArray::startsWith(QByteArrayView bv) const
このバイト配列がbv で見たバイト列で始まっている場合はtrue
を返し、そうでない場合はfalse
を返す。
例を示します:
QByteArray url("ftp://ftp.qt-project.org/"); if (url.startsWith("ftp:")) ...
この関数は Qt 6.0 で導入されました。
endsWith() およびfirst()も参照してください 。
bool QByteArray::startsWith(char ch) const
これはオーバーロードされた関数です。
このバイト配列がバイトch で始まっている場合はtrue
を返し、そうでない場合はfalse
を返します。
[noexcept]
void QByteArray::swap(QByteArray &other)
バイト配列other をこのバイト配列と入れ替えます。この操作は非常に高速で、失敗することはない。
QByteArray QByteArray::toBase64(QByteArray::Base64Options options = Base64Encoding) const
オプションoptions を使ってエンコードしたバイト配列のコピーを返します。
QByteArray text("Qt is great!"); text.toBase64(); // returns "UXQgaXMgZ3JlYXQh" QByteArray text("<p>Hello?</p>"); text.toBase64(QByteArray::Base64Encoding | QByteArray::OmitTrailingEquals); // returns "PHA+SGVsbG8/PC9wPg" text.toBase64(QByteArray::Base64Encoding); // returns "PHA+SGVsbG8/PC9wPg==" text.toBase64(QByteArray::Base64UrlEncoding); // returns "PHA-SGVsbG8_PC9wPg==" text.toBase64(QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals); // returns "PHA-SGVsbG8_PC9wPg"
Base64エンコードされたデータのエンコードに使用されるアルゴリズムは、RFC 4648で定義されています。
fromBase64()も参照 。
CFDataRef QByteArray::toCFData() const
QByteArray から CFData を作成します。
呼び出し元は CFData オブジェクトを所有し、それを解放する責任があります。
toRawCFData()、fromCFData()、fromRawCFData()、fromRawData()も参照 。
double QByteArray::toDouble(bool *ok = nullptr) const
double
値に変換されたバイト配列を返します。
変換がオーバーフローした場合は無限大を返し、その他の理由(アンダーフローなど)で 変換に失敗した場合は 0.0 を返します。
ok がnullptr
でない場合、失敗は *ok をfalse
に設定することで報告され、成功は *ok をtrue
に設定することで報告される。
QByteArray string("1234.56"); bool ok; double a = string.toDouble(&ok); // a == 1234.56, ok == true string = "1234.56 Volt"; a = str.toDouble(&ok); // a == 0, ok == false
警告: 警告:QByteArray の内容には、プラス/マイナス記号、科学的記数法で使用される文字e、および小数点を 含む、有効な数値文字のみを含めることができる。単位や追加の文字を含めると変換エラーになります。
注意: 数値の変換は、ユーザーのロケールに関係なく、デフォルトのCロケールで行われる。数値と文字列の間でロケールを意識した変換を行うにはQLocale を使用する。
この関数は、先頭と末尾の空白を無視します。
number()も参照 。
[since 6.5]
emscripten::val QByteArray::toEcmaUint8Array()
QByteArray から Uint8Array を作成します。
この関数は、QByteArray が所有するヒープメモリから JavaScript データバッファにデータを転送します。この関数は ArrayBuffer を確保し、そこにコピーし、そのバッファへの Uint8Array ビューを返します。
JavaScriptオブジェクトはデータのコピーを所有し、このQByteArray 、コピー後に安全に削除することができます。
QByteArray byteArray = "test"; emscripten::val uint8array = byteArray.toEcmaUint8Array();
この関数は Qt 6.5 で導入されました。
toEcmaUint8Array()も参照してください 。
float QByteArray::toFloat(bool *ok = nullptr) const
float
値に変換されたバイト配列を返します。
変換がオーバーフローした場合は無限大を返し、その他の理由(アンダーフローなど)で変換に失敗した場合は0.0を返します。
ok がnullptr
でない場合、失敗は *ok をfalse
に設定することで報告され、成功は *ok をtrue
に設定することで報告される。
QByteArray string("1234.56"); bool ok; float a = string.toFloat(&ok); // a == 1234.56, ok == true string = "1234.56 Volt"; a = str.toFloat(&ok); // a == 0, ok == false
警告: 警告:QByteArray の内容には、プラス/マイナス記号、科学的記数法で使用される文字e、および小数点 を含む有効な数値文字のみを含めることができる。単位や追加の文字を含めると、変換エラーになります。
注意: 数値の変換は、ユーザーのロケールに関係なく、デフォルトのCロケールで行われる。数値と文字列間のロケール対応変換を行うには、QLocale を使用する。
この関数は、先頭と末尾の空白を無視します。
number()も参照 。
QByteArray QByteArray::toHex(char separator = '\0') const
バイト配列を 16 進エンコードしたものを返します。
16 進エンコードでは、0 ~ 9 の数字と a ~ f の文字が使用されます。
separator が ' \0' でない場合、16 進バイトの間に区切り文字が挿入されます。
例
QByteArray macAddress = QByteArray::fromHex("123456abcdef"); macAddress.toHex(':'); // returns "12:34:56:ab:cd:ef" macAddress.toHex(0); // returns "123456abcdef"
fromHex()も参照してください 。
int QByteArray::toInt(bool *ok = nullptr, int base = 10) const
base を基数としてint
に変換されたバイト配列を返します。基数 0 および 2 から 36 までをサポートし、9 を超える桁には文字を使用する。
base が0の場合、塩基は以下のルールで自動的に決定される:バイト配列が "0x "で始まる場合、16進数(基数16)であると仮定され、そうでない場合、"0b "で始まる場合、2進数(基数2)であると仮定され、そうでない場合、"0 "で始まる場合、8進数(基数8)であると仮定され、そうでない場合、10進数であると仮定される。
変換に失敗した場合は0を返す。
ok がnullptr
でない場合、失敗は *ok をfalse
に設定することで報告され、成功は *ok をtrue
に設定することで報告される。
QByteArray str("FF"); bool ok; int hex = str.toInt(&ok, 16); // hex == 255, ok == true int dec = str.toInt(&ok, 10); // dec == 0, ok == false
注意: 数値の変換は、ユーザーのロケールに関係なく、デフォルトのCロケールで行われる。数値と文字列の間でロケールを意識した変換を行うには、QLocale を使用する。
注意 :"0b" 接頭辞のサポートは Qt 6.4 で追加されました。
number()も参照してください 。
long QByteArray::toLong(bool *ok = nullptr, int base = 10) const
base を基数としてlong
int に変換したバイト配列を返します。基数 0 および 2 から 36 までがサポートされており、9 を超える数字にはアルファベットを用います。
base が0の場合、塩基は以下のルールで自動的に決定される:バイト配列が "0x "で始まる場合、16進数(基数16)であると仮定され、そうでない場合、"0b "で始まる場合、2進数(基数2)であると仮定され、そうでない場合、"0 "で始まる場合、8進数(基数8)であると仮定され、そうでない場合、10進数であると仮定される。
変換に失敗した場合は0を返す。
ok がnullptr
でない場合、失敗は *ok をfalse
に設定することで報告され、成功は *ok をtrue
に設定することで報告される。
QByteArray str("FF"); bool ok; long hex = str.toLong(&ok, 16); // hex == 255, ok == true long dec = str.toLong(&ok, 10); // dec == 0, ok == false
注意: 数値の変換は、ユーザーのロケールに関係なく、デフォルトのCロケールで行われる。数値と文字列の間でロケールを意識した変換を行うには、QLocale を使用する。
注意 :"0b" 接頭辞のサポートは Qt 6.4 で追加されました。
number()も参照してください 。
qlonglong QByteArray::toLongLong(bool *ok = nullptr, int base = 10) const
base を基数としてlong long
に変換したバイト配列を返します。基数 0 および 2 から 36 までがサポートされており、9 を超える数字にはアルファベットを用います。
base が0の場合、塩基は以下のルールで自動的に決定される:バイト配列が "0x "で始まる場合、16進数(基数16)であると仮定され、そうでない場合、"0b "で始まる場合、2進数(基数2)であると仮定され、そうでない場合、"0 "で始まる場合、8進数(基数8)であると仮定され、そうでない場合、10進数であると仮定される。
変換に失敗した場合は0を返す。
ok がnullptr
でない場合、失敗は *ok をfalse
に設定することで報告され、成功は *ok をtrue
に設定することで報告される。
注意: 数値の変換は、ユーザーのロケールに関係なく、デフォルトのCロケールで行われる。数値と文字列の間でロケールを意識した変換を行うには、QLocale を使用する。
注意 :"0b" 接頭辞のサポートは Qt 6.4 で追加されました。
number()も参照してください 。
QByteArray QByteArray::toLower() const
各 ASCII 大文字を小文字に変換したバイト配列のコピーを返します。
例
QByteArray x("Qt by THE QT COMPANY"); QByteArray y = x.toLower(); // y == "qt by the qt company"
isLower(),toUpper(),Character Caseも参照して ください。
NSData *QByteArray::toNSData() const
QByteArray から NSData を作成する。
NSData オブジェクトは自動解放されます。
fromNSData()、fromRawNSData()、fromRawData() およびtoRawNSData() も参照 。
QByteArray QByteArray::toPercentEncoding(const QByteArray &exclude = QByteArray(), const QByteArray &include = QByteArray(), char percent = '%') const
このバイト配列の URI/URL 形式のパーセントエンコードされたコピーを返します。percent パラメータを使用すると、デフォルトの '%' 文字を別の文字に上書きすることができます。
デフォルトでは、この関数は以下のいずれでもないすべてのバイトをエンコードします:
ALPHA("a "から "z"、"A "から "Z")/DIGIT(0から9)/"-"/"./ "_" / "~"
バイトがエンコードされないようにするには、そのバイトをexclude に渡します。 バイトが強制的にエンコードされるようにするには、そのバイトをinclude に渡します。percent の文字は常にエンコードされます。
例
QByteArray text = "{a fishy string?}"; QByteArray ba = text.toPercentEncoding("{}", "s"); qDebug("%s", ba.constData()); // prints "{a fi%73hy %73tring%3F}"
16進エンコードでは、0~9の数字とA~Fの大文字が使われる。
fromPercentEncoding() およびQUrl::toPercentEncoding()も参照 。
CFDataRef QByteArray::toRawCFData() const
QByteArray のバイトを使用する CFData を構築します。
QByteArray のバイトはコピーされない。
呼び出し元は、この CFData オブジェクトが存在する限り、QByteArray が削除されたり変更されたりしないことを保証する。
toCFData()、fromRawCFData()、fromCFData()、fromRawData()も参照 。
NSData *QByteArray::toRawNSData() const
QByteArray のバイトを使用する NSData を構築する。
QByteArray のバイトはコピーされない。
呼び出し元は、この NSData オブジェクトが存在する限り、QByteArray が削除または変更されないことを保証する。
fromRawNSData()、fromNSData()、fromRawData()、およびtoNSData()も参照 。
short QByteArray::toShort(bool *ok = nullptr, int base = 10) const
base を基数としてshort
に変換されたバイト配列を返します。基数 0 および 2 から 36 までをサポートし、9 を超える桁にはアルファベットを使用します。
base が0の場合、塩基は以下のルールで自動的に決定される:バイト配列が "0x "で始まる場合、16進数(基数16)であると仮定され、そうでない場合、"0b "で始まる場合、2進数(基数2)であると仮定され、そうでない場合、"0 "で始まる場合、8進数(基数8)であると仮定され、そうでない場合、10進数であると仮定される。
変換に失敗した場合は0を返す。
ok がnullptr
でない場合、失敗は *ok をfalse
に設定することで報告され、成功は *ok をtrue
に設定することで報告される。
注意: 数値の変換は、ユーザーのロケールに関係なく、デフォルトのCロケールで行われる。数値と文字列の間でロケールを意識した変換を行うには、QLocale を使用する。
注意 :"0b" 接頭辞のサポートは Qt 6.4 で追加されました。
number()も参照してください 。
std::string QByteArray::toStdString() const
このQByteArray に含まれるデータを持つ std::string オブジェクトを返します。
この演算子は、std::string オブジェクトを受け取る関数にQByteArray を渡すのに便利です。
fromStdString() およびQString::toStdString()も参照 。
uint QByteArray::toUInt(bool *ok = nullptr, int base = 10) const
base を基数としてunsigned int
に変換したバイト配列を返します。基数 0 および 2 から 36 までがサポートされており、9 を超える数字にはアルファベットを使用します。
base が0の場合、塩基は以下のルールで自動的に決定される:バイト配列が "0x "で始まる場合、16進数(基数16)であると仮定され、そうでない場合、"0b "で始まる場合、2進数(基数2)であると仮定され、そうでない場合、"0 "で始まる場合、8進数(基数8)であると仮定され、そうでない場合、10進数であると仮定される。
変換に失敗した場合は0を返す。
ok がnullptr
でない場合、失敗は *ok をfalse
に設定することで報告され、成功は *ok をtrue
に設定することで報告される。
注意: 数値の変換は、ユーザーのロケールに関係なく、デフォルトのCロケールで行われる。数値と文字列の間でロケールを意識した変換を行うには、QLocale を使用する。
注意 :"0b" 接頭辞のサポートは Qt 6.4 で追加されました。
number()も参照してください 。
ulong QByteArray::toULong(bool *ok = nullptr, int base = 10) const
base を基数としてunsigned long int
に変換したバイト配列を返します。基数 0 および 2 から 36 までがサポートされており、9 を超える数字にはアルファベットを使用します。
base が0の場合、塩基は以下のルールで自動的に決定される:バイト配列が "0x "で始まる場合、16進数(基数16)であると仮定され、そうでない場合、"0b "で始まる場合、2進数(基数2)であると仮定され、そうでない場合、"0 "で始まる場合、8進数(基数8)であると仮定され、そうでない場合、10進数であると仮定される。
変換に失敗した場合は0を返す。
ok がnullptr
でない場合、失敗は *ok をfalse
に設定することで報告され、成功は *ok をtrue
に設定することで報告される。
注意: 数値の変換は、ユーザーのロケールに関係なく、デフォルトのCロケールで行われる。数値と文字列の間でロケールを意識した変換を行うには、QLocale を使用する。
注意 :"0b" 接頭辞のサポートは Qt 6.4 で追加されました。
number()も参照してください 。
qulonglong QByteArray::toULongLong(bool *ok = nullptr, int base = 10) const
base を基数としてunsigned long long
に変換したバイト配列を返します。基数 0 および 2 から 36 までがサポートされており、9 を超える数字にはアルファベットを使用します。
base が0の場合、塩基は以下のルールで自動的に決定される:バイト配列が "0x "で始まる場合、16進数(基数16)であると仮定され、そうでない場合、"0b "で始まる場合、2進数(基数2)であると仮定され、そうでない場合、"0 "で始まる場合、8進数(基数8)であると仮定され、そうでない場合、10進数であると仮定される。
変換に失敗した場合は0を返す。
ok がnullptr
でない場合、失敗は *ok をfalse
に設定することで報告され、成功は *ok をtrue
に設定することで報告される。
注意: 数値の変換は、ユーザーのロケールに関係なく、デフォルトのCロケールで行われる。数値と文字列の間でロケールを意識した変換を行うには、QLocale を使用する。
注意 :"0b" 接頭辞のサポートは Qt 6.4 で追加されました。
number()も参照してください 。
ushort QByteArray::toUShort(bool *ok = nullptr, int base = 10) const
base を基数としてunsigned short
に変換したバイト配列を返します。基数 0 および 2 から 36 までがサポートされており、9 を超える数字にはアルファベットを使用します。
base が0の場合、塩基は以下のルールで自動的に決定される:バイト配列が "0x "で始まる場合、16進数(基数16)であると仮定され、そうでない場合、"0b "で始まる場合、2進数(基数2)であると仮定され、そうでない場合、"0 "で始まる場合、8進数(基数8)であると仮定され、そうでない場合、10進数であると仮定される。
変換に失敗した場合は0を返す。
ok がnullptr
でない場合、失敗は *ok をfalse
に設定することで報告され、成功は *ok をtrue
に設定することで報告される。
注意: 数値の変換は、ユーザーのロケールに関係なく、デフォルトのCロケールで行われる。数値と文字列の間でロケールを意識した変換を行うには、QLocale を使用する。
注意 :"0b" 接頭辞のサポートは Qt 6.4 で追加されました。
number()も参照してください 。
QByteArray QByteArray::toUpper() const
各 ASCII 小文字を大文字に変換したバイト配列のコピーを返します。
例
QByteArray x("Qt by THE QT COMPANY"); QByteArray y = x.toUpper(); // y == "QT BY THE QT COMPANY"
isUpper()、toLower()、Character Case も参照して ください。
QByteArray QByteArray::trimmed() const
このバイト配列の先頭と末尾からスペーシング文字を取り除いたコピーを返す。
スペーシング文字は、標準 C++ 関数isspace()
が C ロケールでtrue
を返す文字です。これらは ASCII 文字のタブ ' \t'、改行 '˶n'、キャリッジリターン '˶r'、垂直タブ '˶v'、フォームフィード '˶f'、スペース ' です。
例
QByteArray ba(" lots\t of\nwhitespace\r\n "); ba = ba.trimmed(); // ba == "lots\t of\nwhitespace";
例:simplified() とは異なり、trimmed() は内部スペースを変更しません。
simplified()、QChar::SpecialCharacter 、およびSpacing Charactersも参照してください 。
void QByteArray::truncate(qsizetype pos)
インデックス位置pos でバイト配列を切り捨てる。
pos が配列の終端を超えている場合は、何も起こりません。
例:
QByteArray ba("Stockholm"); ba.truncate(5); // ba == "Stock"
chop()、resize()、およびfirst() も参照 。
QByteArray &QByteArray::operator+=(const QByteArray &ba)
バイト配列ba をこのバイト配列の末尾に追加し、このバイト配列への参照を返します。
例:
QByteArray x("free"); QByteArray y("dom"); x += y; // x == "freedom"
注意:QByteArray は暗黙の共有クラスです。したがって、空のバイト配列に追加した場合、そのバイト配列はba に保持されているデータを共有するだけです。 この場合、データのコピーは行われず、一定の時間がかかります。共有インスタンスが変更された場合、そのインスタンスはコピーされ(コピーオンライト)、線形時間がかかります。
追加先のバイト配列が空でない場合、データのディープコピーが実行され、線形時間がかかる。
QByteArray 、データの末尾に余分な領域があらかじめ割り当てられているため、追記操作のたびに再割り当てすることなくデータを増やすことができるからである。
QByteArray &QByteArray::operator+=(char ch)
これはオーバーロードされた関数です。
バイトch をこのバイト配列の末尾に追加し、このバイト配列への参照を返します。
QByteArray &QByteArray::operator+=(const char *str)
これはオーバーロードされた関数です。
バイト配列の末尾に ' \0' で終端する文字列str を追加し、このバイト配列への参照を返します。
[noexcept]
QByteArray &QByteArray::operator=(QByteArray &&other)
QByteArray インスタンスにother を代入します。
[noexcept]
QByteArray &QByteArray::operator=(const QByteArray &other)
other をこのバイト配列に代入し、このバイト配列への参照を返します。
QByteArray &QByteArray::operator=(const char *str)
これはオーバーロードされた関数です。
このバイト配列にstr を代入します。
str はヌル終端文字列を指すものとし、その長さは動的に決定される。
char &QByteArray::operator[](qsizetype i)
インデックス位置i のバイトを、変更可能な参照として返します。
i はバイト配列の有効なインデックス位置でなければなりません(すなわち、0 <= < ())。i size
例:
QByteArray ba("Hello, world"); cout << ba[0]; // prints H ba[7] = 'W'; // ba == "Hello, World"
at()も参照のこと 。
char QByteArray::operator[](qsizetype i) const
これはオーバーロードされた関数である。
at(i) と同じ。
関連する非メンバー
[since 6.1]
template <typename T> qsizetype erase(QByteArray &ba, const T &t)
バイト配列ba から、比較結果がt と等しい要素をすべて削除します。削除された要素があれば、その数を返します。
この関数は Qt 6.1 で導入されました。
erase_ifも参照してください 。
[since 6.1]
template <typename Predicate> qsizetype erase_if(QByteArray &ba, Predicate pred)
バイト配列ba から、述語pred が真を返す要素をすべて削除します。もしあれば、削除された要素の数を返します。
この関数は Qt 6.1 で導入されました。
eraseも参照してください 。
quint16 qChecksum(QByteArrayView data, Qt::ChecksumType standard = Qt::ChecksumIso3309)
data の CRC-16 チェックサムを返します。
チェックサムは、バイトオーダー(エンディアン)に依存せず、standard で公開されているアルゴリズムに従って計算されます。 デフォルトでは、ISO 3309 (Qt::ChecksumIso3309) で公開されているアルゴリズムが使用されます。
注意: この関数は、CRC-16-CCITT アルゴリズムの 16 ビットキャッシュ保存(16 エントリテーブル)実装です。
QByteArray qCompress(const QByteArray &data, int compressionLevel = -1)
data バイト配列を圧縮し、圧縮されたデータを新しいバイト配列で返します。
compressionLevel パラメータは、圧縮率を指定する。有効な値は0から9の間で、9は最大の圧縮(つまり、圧縮データが小さくなる)に対応するが、その代償として低速なアルゴリズムを使用することになる。より小さな値(8、7、...、1)は、わずかに高速で、連続的に少ない圧縮を提供します。値0は、まったく圧縮しないことに相当する。デフォルト値は -1 で、これは zlib のデフォルト圧縮を指定します。
qUncompress(const QByteArray &data)も参照 。
QByteArray qCompress(const uchar *data, qsizetype nbytes, int compressionLevel = -1)
これはオーバーロードされた関数です。
data の最初のnbytes を圧縮レベルcompressionLevel で圧縮し、圧縮後のデータを新しいバイト配列で返します。
QByteArray qUncompress(const QByteArray &data)
data のバイト配列を圧縮解除し、圧縮解除されたデータを新しいバイト配列で返す。
入力データが破損していた場合は、空のQByteArray を返す。
この関数は、qCompress() で圧縮されたデータを、この Qt およびそれ以前の Qt バージョン、この機能が追加された Qt 3.1 まで遡って展開します。
注意:この関数を使用して zlib で圧縮された外部データを展開したい場合は、まずデータを含むバイト配列に 4 バイトのヘッダを付加する必要があります。このヘッダには、符号なし、ビッグエンディアン、32ビットの整数で表した、解凍されるデータの予想される長さ(バイト数)を含める必要があります。ただし、この数値は出力バッファサイズの初期サイズのヒントに過ぎない。指示されたサイズが小さすぎて結果を保持できない場合、出力バッファサイズは、出力が収まるかシステムがメモリ不足になるまで増加し続けます。つまり、32ビットヘッダにもかかわらず、64ビットプラットフォームでは、この関数は4GB以上の出力を生成することができます。
注意: Qt 6.5より前のバージョンのQtでは、2GiB以上のデータは不安定に動作しました。
qCompress()も参照してください 。
QByteArray qUncompress(const uchar *data, qsizetype nbytes)
これはオーバーロードされた関数です。
data の最初のnbytes を解凍し、解凍されたデータを含む新しいバイト配列を返します。
int qstrcmp(const char *str1, const char *str2)
安全なstrcmp()
関数。
str1 とstr2 を比較する。str1 がstr2 より小さい場合は負の値を、str1 がstr2 と等しい場合は 0 を、str1 がstr2 より大きい場合は正の値を返す。
両方の文字列がnullptr
である場合、それらは等しいとみなされる。そうでない場合、どちらかがnullptr
であれば、それはもう片方より小さいものとして扱われる(もう片方が空文字列であっても)。
qstrncmp()、qstricmp()、qstrnicmp()、Character Case 、およびQByteArray::compare()も参照のこと 。
char *qstrcpy(char *dst, const char *src)
src の ' \0' までのすべての文字をdst にコピーし、dst へのポインタを返します。src がnullptr
の場合、直ちにnullptr
を返します。
この関数は、dst がsrc の内容を保持するのに十分な大きさであると仮定している。
注意: dst とsrc が重なる場合、動作は未定義である。
qstrncpy()も参照のこと 。
char *qstrdup(const char *src)
複製文字列を返す。
src のコピーのための領域を確保し、それをコピーして、コピーへのポインタを返す。src がnullptr
の場合、直ちにnullptr
を返す。
所有権は呼び出し元に渡されるため、返された文字列はdelete[]
を使って削除する必要がある。
int qstricmp(const char *str1, const char *str2)
安全なstricmp()
関数。
str1 とstr2 を比較し、ASCII 文字の違いは無視する。
str1 がstr2 より小さい場合は負の値を、str1 がstr2 と等しい場合は 0 を、str1 がstr2 より大きい場合は正の値を返す。
両方の文字列がnullptr
である場合、それらは等しいとみなされる。そうでない場合、どちらかがnullptr
であれば、それはもう一方よりも小さいものとして扱われる(もう一方が空文字列であっても)。
qstrcmp()、qstrncmp()、qstrnicmp()、Character Case 、およびQByteArray::compare()も参照のこと 。
size_t qstrlen(const char *str)
安全なstrlen()
関数。
終端 ' \0' の前の文字数、またはstr がnullptr
の場合は 0 を返します。
qstrnlen()も参照 。
int qstrncmp(const char *str1, const char *str2, size_t len)
安全なstrncmp()
関数。
str1 とstr2 の最大len バイトを比較します。
str1 がstr2 より小さい場合は負の値を、str1 がstr2 と等しい場合は 0 を、str1 がstr2 より大きい場合は正の値を返します。
両方の文字列がnullptr
である場合、それらは等しいとみなされる。そうでない場合、どちらかがnullptr
であれば、それはもう片方より小さいものとして扱われる(もう片方が空文字列であっても、len が 0 であっても)。
qstrcmp()、qstricmp()、qstrnicmp()、Character Case 、QByteArray::compare()も参照のこと 。
char *qstrncpy(char *dst, const char *src, size_t len)
安全なstrncpy()
関数。
src から最大len バイトをdst にコピーします(len または終端 ' \0' のいずれか早い方で停止)。dst がnullptr
またはlen が 0 の場合を除き、dst が'˶0'終端であることを保証します。src がnullptr
の場合はnullptr
を返し、そうでない場合はdst を返します。
この関数は、dst が少なくともlen 文字以上であることを前提とする。
注意 :dst とsrc が重なる場合、動作は未定義である。
注意 : strncpy()とは異なり、この関数はdst のlen バイトすべてに ' \0' を書き込むのではなく、終端の ' \0' の後で停止します。この意味では、C11 の strncpy_s() に似ている。
qstrcpy()も参照のこと 。
int qstrnicmp(const char *str1, const char *str2, size_t len)
安全なstrnicmp()
関数。
最大でstr1 とstr2 のlen バイトを比較し、ASCII 文字の場合は差分を無視します。
str1 がstr2 より小さい場合は負の値を、str1 がstr2 と等しい場合は 0 を、str1 がstr2 より大きい場合は正の値を返す。
両方の文字列がnullptr
の場合は等しいとみなされる。そうでない場合は、どちらかがnullptr
の場合、もう片方より小さいものとして扱われる(もう片方が空文字列であっても、len が0であっても)。
qstrcmp()、qstrncmp()、qstricmp()、Character Case 、QByteArray::compare()も参照のこと 。
size_t qstrnlen(const char *str, size_t maxlen)
安全なstrnlen()
関数。
終端の ' \0' より前の文字数を返しますが、最大でmaxlen を返します。str がnullptr
の場合は 0 を返す。
qstrlen()も参照してください 。
[noexcept]
bool operator!=(const QByteArray &lhs, const QByteArray &rhs)
これはオーバーロードされた関数です。
バイト配列lhs がバイト配列rhs と等しくない場合はtrue
を返し、そうでない場合はfalse
を返す。
QByteArray::compare()も参照の こと。
[noexcept]
bool operator!=(const QByteArray &lhs, const char *const &rhs)
これはオーバーロードされた関数です。
バイト配列lhs が ' \0' で終端する文字列rhs と等しくなければtrue
を返し、そうでなければfalse
を返します。
QByteArray::compare()も参照してください 。
[noexcept]
bool operator!=(const char *const &lhs, const QByteArray &rhs)
これはオーバーロードされた関数です。
' \0'-終端文字列lhs がバイト配列rhs と等しくなければtrue
を返し、そうでなければfalse
を返します。
QByteArray::compare()も参照してください 。
QByteArray operator+(char a1, const QByteArray &a2)
これはオーバーロードされた関数です。
バイト配列a1 とバイト配列a2 を連結した結果のバイト配列を返す。
QByteArray operator+(const QByteArray &a1, char a2)
これはオーバーロードされた関数です。
バイト配列a1 とバイト配列a2 を連結したバイト配列を返します。
QByteArray operator+(const QByteArray &a1, const QByteArray &a2)
バイト配列a1 とバイト配列a2 を連結した結果のバイト配列を返します。
QByteArray::operator+=()も参照してください 。
QByteArray operator+(const QByteArray &a1, const char *a2)
これはオーバーロードされた関数です。
バイト配列a1 と ' \0' で終端する文字列a2 を連結したバイト配列を返します。
QByteArray operator+(const char *a1, const QByteArray &a2)
オーバーロードされた関数です。
バイト配列a1 とバイト配列a2 を連結したバイト配列を返します。
[noexcept]
bool operator<(const QByteArray &lhs, const QByteArray &rhs)
これはオーバーロードされた関数です。
バイト配列lhs がバイト配列rhs よりレキシカルに小さい場合はtrue
を返し、そうでない場合はfalse
を返します。
QByteArray::compare()も参照してください 。
[noexcept]
bool operator<(const QByteArray &lhs, const char *const &rhs)
これはオーバーロードされた関数です。
バイト配列lhs が字句解析的に ' \0' で終端する文字列rhs よりも小さい場合はtrue
を返し、そうでない場合はfalse
を返します。
QByteArray::compare()も参照してください 。
[noexcept]
bool operator<(const char *const &lhs, const QByteArray &rhs)
これはオーバーロードされた関数です。
' \0'-終端文字列lhs がバイト配列rhs より語彙的に小さい場合true
を返し、そうでない場合false
を返します。
QByteArray::compare()も参照してください 。
QDataStream &operator<<(QDataStream &out, const QByteArray &ba)
バイト配列ba をストリームout に書き込み、ストリームへの参照を返します。
Qt データ型のシリアライズも参照してください 。
[noexcept]
bool operator<=(const QByteArray &lhs, const QByteArray &rhs)
これはオーバーロードされた関数です。
バイト配列lhs がバイト配列rhs より小さいか等しい場合はtrue
を返し、そうでない場合はfalse
を返します。
QByteArray::compare()も参照してください 。
[noexcept]
bool operator<=(const QByteArray &lhs, const char *const &rhs)
これはオーバーロードされた関数です。
バイト配列lhs が字句解析的に ' \0' で終端する文字列rhs 以下であればtrue
を返し、そうでなければfalse
を返します。
QByteArray::compare()も参照してください 。
[noexcept]
bool operator<=(const char *const &lhs, const QByteArray &rhs)
これはオーバーロードされた関数です。
' \0'-終端文字列lhs が字句解析的にバイト配列rhs 以下であればtrue
を返し、そうでなければfalse
を返します。
QByteArray::compare()も参照してください 。
[noexcept]
bool operator==(const QByteArray &lhs, const QByteArray &rhs)
これはオーバーロードされた関数です。
バイト配列lhs がバイト配列rhs と等しい場合はtrue
を返し、そうでない場合はfalse
を返します。
QByteArray::compare()も参照の こと。
[noexcept]
bool operator==(const QByteArray &lhs, const char *const &rhs)
これはオーバーロードされた関数です。
バイト配列lhs が ' \0' 終端文字列rhs と等しい場合はtrue
を返し、そうでない場合はfalse
を返します。
QByteArray::compare()も参照してください 。
[noexcept]
bool operator==(const char *const &lhs, const QByteArray &rhs)
これはオーバーロードされた関数です。
' \0'-終端文字列lhs がバイト配列rhs と等しければtrue
を返し、そうでなければfalse
を返します。
QByteArray::compare()も参照してください 。
[noexcept]
bool operator>(const QByteArray &lhs, const QByteArray &rhs)
これはオーバーロードされた関数です。
バイト配列lhs がバイト配列rhs より語彙的に大きい場合はtrue
を返し、そうでない場合はfalse
を返します。
QByteArray::compare()も参照して ください。
[noexcept]
bool operator>(const QByteArray &lhs, const char *const &rhs)
これはオーバーロードされた関数です。
バイト配列lhs が ' \0' で終端する文字列rhs より字句の並びが大きい場合はtrue
を返し、そうでない場合はfalse
を返します。
QByteArray::compare()も参照してください 。
[noexcept]
bool operator>(const char *const &lhs, const QByteArray &rhs)
これはオーバーロードされた関数です。
' \0'-終端文字列lhs がバイト配列rhs より語彙的に大きい場合true
を返し、そうでない場合false
を返します。
QByteArray::compare()も参照してください 。
[noexcept]
bool operator>=(const QByteArray &lhs, const QByteArray &rhs)
これはオーバーロードされた関数です。
バイト配列lhs がバイト配列rhs より語彙的に大きいか等しい場合はtrue
を返し、そうでない場合はfalse
を返します。
QByteArray::compare()も参照 。
[noexcept]
bool operator>=(const QByteArray &lhs, const char *const &rhs)
これはオーバーロードされた関数です。
バイト配列lhs が字句解析的に ' \0' で終端する文字列rhs 以上であればtrue
を返し、そうでなければfalse
を返します。
QByteArray::compare()も参照してください 。
[noexcept]
bool operator>=(const char *const &lhs, const QByteArray &rhs)
これはオーバーロードされた関数です。
' \0'-終端文字列lhs が字句解析的にバイト配列rhs 以上であればtrue
を返し、そうでなければfalse
を返します。
QByteArray::compare()も参照してください 。
QDataStream &operator>>(QDataStream &in, QByteArray &ba)
ストリームin からバイト配列をba に読み込み、ストリームへの参照を返します。
Qt データ型のシリアライズ」も参照して ください。
マクロ・ドキュメント
QByteArrayLiteral(ba)
このマクロは、コンパイル時に文字列リテラルba からQByteArray のデータを生成します。この場合、QByteArray を作成するのは自由です。生成されたバイト配列データは、コンパイルされたオブジェクト・ファイルの読み取り専用セグメントに格納されます。
例えば
QByteArray ba = QByteArrayLiteral("byte array contents");
二重引用符で囲まれたプレーンC++文字列リテラルの代わりにQByteArrayLiteralを使用すると、コンパイル時に既知のデータからQByteArray インスタンスの作成が大幅に高速化されます。
QStringLiteralも参照してください 。
QT_NO_CAST_FROM_BYTEARRAY
QByteArray から const char * または const void * への自動変換を無効にします。
QT_NO_CAST_TO_ASCII およびQT_NO_CAST_FROM_ASCII も参照のこと 。
[since 6.8]
QT_NO_QSNPRINTF
このマクロを定義すると、qsnprintf() 関数と qvsnprintf() 関数が使用できなくなります。無効にしたい理由については、関数のドキュメントを参照してください。
このマクロは Qt 6.8 で導入されました。
qsnprintf() およびqvsnprintf()も参照してください 。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。