QByteArray Class
QByteArrayクラスはバイト配列です。詳細...
ヘッダー | #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, qsizetypesize= -1) | |
QByteArray(qsizetypesize, Qt::Initialization) | |
QByteArray(qsizetypesize, charch) | |
QByteArray(const QByteArray&other) | |
QByteArray(QByteArray&&other) | |
~QByteArray() | |
QByteArray &&other | append(const QByteArray&ba) |
QByteArray &(const QByteArray &ba) | append(QByteArrayViewデータ) |
QByteArray & (const QByteArray &ba) | append(charch) |
QByteArray & (const char *str) | append(const char*str) |
QByteArray & (const char *str, qsizetype len) | append(const char*str, qsizetypelen) |
QByteArray & (const char *str, qsizetype len) | append(qsizetypecount, charch) |
(since 6.6) QByteArray & (qsizetype count, char ch) | assign(QByteArrayViewv) |
(since 6.6) QByteArray & (QByteArrayView v) | assign(InputIteratorfirst, InputIteratorlast) |
(since 6.6) QByteArray & (qsizetype n, char ch) | assign(qsizetypen, charc) |
char | at(qsizetypei) 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(qsizetypen) |
QByteArray | chopped(qsizetypelen) && QByteArray::const_iterator () |
QByteArray | chopped(qsizetypelen) const &. |
void | clear() |
(since 6.0) int | compare(QByteArrayViewbv, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
QByteArray::const_iterator | constBegin() const |
const char *. | constData() const |
QByteArray::const_iterator | constEnd() const |
(since 6.0) ブール | contains(QByteArrayViewbv) const |
ブール | contains(charch) const |
(since 6.0) qsizetype | count(QByteArrayViewbv) const |
qsizetype | count(charch) 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) ブール | endsWith(QByteArrayViewbv) const |
ブール | endsWith(charch) const |
(since 6.1) QByteArray::iterator | erase(QByteArray::const_iteratorfirst, QByteArray::const_iteratorlast) |
(since 6.5) QByteArray::iterator | erase(QByteArray::const_iteratorit) |
QByteArray::const_iterator it | fill(charch, qsizetypesize= -1) |
(since 6.0) QByteArray | first(qsizetypen) &&. |
(since 6.0) QByteArray | first(qsizetypen) const &. |
char & | front() |
char | front() const |
(since 6.0) qsizetype | indexOf(QByteArrayViewbv, qsizetypefrom= 0) const |
qsizetype | indexOf(charch, qsizetypefrom= 0) const |
(since 6.0) QByteArray & (qsizetype i, qsizetype from = 0) | insert(qsizetypei, QByteArrayViewdata) |
QByteArray & (qsizetype i, QByteArrayView data) | insert(qsizetypei, const QByteArray&data) |
QByteArray & (qsizetype i, const QByteArray &data) | insert(qsizetypei, const char*s) |
QByteArray & (qsizetype i, const char *s) | insert(qsizetypei, charch) |
QByteArray & (qsizetype i, const char *s) | insert(qsizetypei, const char*data, qsizetypelen) |
QByteArray & (qsizetype i, const char * data, qsizetype len) | insert(qsizetypei, qsizetypecount, charch) |
ブール | isEmpty() const |
ブール | isLower() const |
ブール | isNull() const |
ブール | isUpper() const |
(since 6.3) ブール | isValidUtf8() const |
(since 6.0) QByteArray | last(qsizetypen) &&. |
(since 6.0) QByteArray | last(qsizetypen) const &ByteArray |
(since 6.0) qsizetype | lastIndexOf(QByteArrayViewbv, qsizetypefrom) const |
(since 6.2) qsizetype | lastIndexOf(QByteArrayViewbv) const |
qsizetype | lastIndexOf(charch, qsizetypefrom= -1) const |
QByteArray | left(qsizetypelen) && (QByteArrayView bv) |
QByteArray | left(qsizetypelen) const && QByteArray |
QByteArray | leftJustified(qsizetypewidth, charfill= ' ', booltruncate= false) const |
qsizetype | length() const |
(since 6.8) qsizetype | max_size() const |
QByteArray | mid(qsizetypepos, qsizetypelen= -1) &&. |
QByteArray | mid(qsizetypepos, qsizetypelen= -1) const && QByteArray(). |
(since 6.4) QByteArray | percentDecoded(charpercent= '%') const |
QByteArray & (QByteArrayView) | prepend(QByteArrayViewba) |
QByteArray & (QByteArrayView ba) | prepend(charch) |
QByteArray & (QByteArrayView &ba) | prepend(const QByteArray&ba) |
QByteArray & (const QByteArray &ba) | prepend(const char*str) |
QByteArray & (const char *str, qsizetype len) | prepend(const char*str, qsizetypelen) |
QByteArray & (const char *str, qsizetype len) | prepend(qsizetypecount, charch) |
void | push_back(const QByteArray&other) |
(since 6.0) void | push_back(QByteArrayViewstr) |
void | push_back(charch) |
void | push_back(const char*str) |
void | push_front(const QByteArray&other) |
(since 6.0) void | push_front(QByteArrayViewstr) |
void | push_front(charch) |
void | push_front(const char*str) |
QByteArray::reverse_iterator | rbegin() |
QByteArray::const_reverse_iterator | rbegin() const |
QByteArray & (qsizetype pos, qsizetype str) | remove(qsizetypepos, qsizetypelen) |
(since 6.5) QByteArray & (qsizetype pos, qsizetype len) | removeAt(qsizetypepos) |
(since 6.5) QByteArray & (qsizetype pos, qsizetype len) | removeFirst() |
(since 6.1) QByteArray & (qsizetype pos) | removeIf(述語pred) |
(since 6.5) QByteArray & (述語pred) | removeLast() |
QByteArray::reverse_iterator | rend() |
QByteArray::const_reverse_iterator | rend() const |
QByteArray | repeated(qsizetypetimes) const |
QByteArray & | replace(qsizetypepos, qsizetypelen, QByteArrayViewafter) |
(since 6.0) QByteArray & (qsizetype pos, qsizetype len, QByteArrayView after) | replace(QByteArrayViewbefore, QByteArrayViewafter) |
QByteArray & (QByteArrayView before, QByteArrayView after) | replace(charの前、QByteArrayViewの後) |
QByteArray & (前にchar、後にchar) | replace(前にchar、後にchar) |
QByteArray & (前にchar、後にchar) | replace(const char*before、qsizetypebsize、const char*after、qsizetypeasize) |
QByteArray & (const char *before, const char *after, qsizetype asize) | replace(qsizetypepos, qsizetypelen, const char*after, qsizetypealen) |
void | reserve(qsizetypesize) |
void | resize(qsizetypesize) |
(since 6.4) void | resize(qsizetypenewSize, charc) |
(since 6.8) void | resizeForOverwrite(qsizetypesize) |
QByteArray | right(qsizetypeのlen) &&。 |
QByteArray | right(qsizetypelen) const & & QByteArray。 |
QByteArray | rightJustified(qsizetypewidth, charfill= ' ', booltruncate= false) const |
QByteArray & | setNum(intn, intbase= 10) |
QByteArray & (long n, int base = 10) | setNum(longn, intbase= 10) |
QByteArray & (long n, int base = 10) | setNum(qlonglongn, intbase= 10) |
QByteArray & (qulonglong n, int base = 10) | setNum(qulonglongn, intbase= 10) |
QByteArray & (qulonglong n, int base = 10) | setNum(shortn, intbase= 10) |
QByteArray & (uint n, int base = 10) | setNum(uintn, intbase= 10) |
QByteArray & (バイト配列 &) | setNum(ulongn, intbase= 10) |
QByte配列 | setNum(ushortn, intbase= 10) |
QByteArray & (double n, char format = '10') | setNum(doublen, charformat= 'g', intprecision= 6) |
QByteArray & (float n, char format = 'g', int precision = 6) | setNum(floatn、char書式= 'g'、int精度= 6) |
バイト配列 | setRawData(const char*data, qsizetypesize) |
void | shrink_to_fit() |
QByteArray | simplified() const |
qsizetype | size() const |
(since 6.8) QByteArray & (qsizetype pos, qsizetype n) | slice(qsizetypepos, qsizetypen) |
(since 6.8) QByteArray & (qsizetype pos, qsizetype n) | slice(qsizetypepos) |
(since 6.0) QByteArray | sliced(qsizetypepos, qsizetypen) &&(qsizetypepos, qsizetypen |
(since 6.0) QByteArray | sliced(qsizetypepos, qsizetypen) const & |
(since 6.0) QByteArray | sliced(qsizetypepos) && QByteArray |
(since 6.0) QByteArray | sliced(qsizetypepos) const & QByteArray (qsizetypepos) |
QList<QByteArray> (char sep) | split(charsep) const |
void | squeeze() |
(since 6.0) ブール | startsWith(QByteArrayViewbv) const |
ブール | startsWith(charch) const |
void | swap(QByteArray&other) |
QByteArray | toBase64(QByteArray::Base64Optionsoptions= 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(charseparator= '♪0') const |
int | toInt(bool*ok= nullptr, intbase= 10) const |
long | toLong(bool*ok= nullptr, intbase= 10) const |
qlonglong | toLongLong(bool*ok= nullptr, intbase= 10) const |
QByteArray | toLower() const |
NSData *. | toNSData() const |
QByteArray | toPercentEncoding(const QByteArray&exclude= QByteArray(), const QByteArray&include= QByteArray(), charpercent= '%') const |
CFDataRef | toRawCFData() const |
NSData *. | toRawNSData() const |
短い | toShort(bool*ok= nullptr, intbase= 10) const |
文字列 | toStdString() const |
uint | toUInt(bool*ok= nullptr, intbase= 10) const |
ulong | toULong(bool*ok= nullptr, intbase= 10) const |
qulonglong | toULongLong(bool*ok= nullptr, intbase= 10) const |
ushort | toUShort(bool*ok= nullptr, intbase= 10) const |
QByteArray | toUpper() const |
QByteArray | trimmed() const |
void | truncate(qsizetypepos) |
const char *. | operator const char *() const |
const void * () | operator const void *() const |
QByteArray & | operator+=(const QByteArray&ba) |
QByteArray & (const QByteArray &ba) | operator+=(charch) |
QByteArray & (const char *str) | operator+=(const char*str) |
QByteArray & (const char *str) | operator=(QByteArray&&other) |
QByteArray & (const QByteArray &other) | operator=(const QByteArray&other) |
QByteArray & (const QByteArray &other) | operator=(const char*str) |
char & (qsizetype i) | operator[](qsizetypei) |
char | operator[](qsizetypei) 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) |
(since 6.4) QByteArray | operator""_ba(const char *str, size_t size) |
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 は、生バイト('Ⅾ0'を含む)と従来の 8 ビット 'Ⅾ0'終端文字列の両方を格納するために使用できます。QByteArray を使用すると、const char *
を使用するよりもはるかに便利です。QByteArray を使用すると、 を使用するよりもはるかに便利です。裏側では、QByteArray は常にデータの後に ' \0' 終端文字が続くようにし、暗黙の共有(copy-on-write) を使用してメモリ使用量を削減し、データの不要なコピーを回避します。
QByteArray に加えて、Qt は文字列データを格納するQString クラスも提供しています。ほとんどの目的では、QString が使いたいクラスです。QByteArrayが(ASCIIを使用する一部のレガシーなケースを除いて)格納するバイトのエンコーディングやセマンティクスに関する仮定を避けることを目的としているのに対し、QByteArrayはその内容をUnicodeテキスト(UTF-16を使用してエンコード)として理解します。さらに、Qt APIでは、QString 。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() 関数は常に、埋め込まれた ' \0' バイトを含み、QByteArray によって追加された終端の ' \0' を除いた配列全体のサイズを返します。例えば
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
この列挙型は、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 の場合、NULL バイト配列が構築されます。
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を返すのが非常に高速になります。共有インスタンスが変更された場合、それはコピーされ(コピーオンライト)、線形時間がかかります。
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()
byte-arrayの最初のバイトを指すSTL形式のイテレータを返します。
警告 返されたイテレータは、デタッチ時またはQByteArray が変更されたときに無効になります。
constBegin() およびend()も参照 。
[noexcept]
QByteArray::const_iterator QByteArray::begin() const
この関数はbegin()をオーバーロードする。
qsizetype QByteArray::capacity() const
再割り当てを行わずにバイト配列に格納できる最大バイト数を返します。
この関数の唯一の目的は、QByteArray'のメモリ使用量を微調整する手段を提供することです。一般に、この関数を呼び出す必要はほとんどないだろう。バイト配列のバイト数を知りたい場合は、size() を呼び出す。
注意: 静的に割り当てられたバイト配列は、それが空でなくても容量が0であることを報告します。
注意 :割り当てられたメモリブロック内の空き領域の位置は未定義である。つまり、空きメモリが常に初期化された要素の後に位置すると仮定してはならない。
reserve() およびsqueeze()も参照の こと。
[noexcept]
QByteArray::const_iterator QByteArray::cbegin() const
byte-arrayの最初のバイトを指すSTL形式のイテレータを返します。
警告: 返されたイテレータは、デタッチ時またはQByteArray が変更されると無効になります。
[noexcept]
QByteArray::const_iterator QByteArray::cend() const
byte-arrayの最後のバイトの直後を指す、STL形式のイテレータを返します。
警告: 警告: 返されたイテレータは、デタッチ時または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 の出現回数を返す。
[noexcept]
QByteArray::const_reverse_iterator QByteArray::crbegin() const
byte-arrayの最初のバイトを逆順に指す、STL形式の逆順イテレータを返します。
警告: 警告: 返されたイテレータは、デタッチ時またはQByteArray が変更されると無効になります。
[noexcept]
QByteArray::const_reverse_iterator QByteArray::crend() const
byte-arrayの最後のバイトの直後を指す、 constSTL形式の逆順イテレータを返します。
警告: 警告: 返されたイテレータは、デタッチ時またはQByteArray が変更されると無効になります。
char *QByteArray::data()
バイト配列に格納されているデータへのポインタを返します。このポインタを使用して、配列を構成するバイトにアクセスし、変更することができます。データは'˶0'終端です。つまり、返されたポインタに続いてアクセスできるバイト数は'˶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()
byte-arrayの最後のバイトの直後を指すSTL形式のイテレータを返します。
警告 返されたイテレータは、デタッチ時またはQByteArray が変更されたときに無効になります。
[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テキスト 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 の大文字を含まないという意味であることに注意。
isUpper() およびtoLower()も参照の こと。
[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 の小文字を含まないという意味であることに注意。
isLower() およびtoUpper()も参照の こと。
[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
このバイト配列において、bv で表示されるバイト列の最後の出現の開始のインデックス位置を、インデックス位置from から後方に検索して返す。
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()
byte-arrayの先頭バイトを指す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()
byte-arrayの最後のバイトの直後を指す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 をテキストとして表現する。
このバイト配列をn を表す文字列に設定し、与えられたformat とprecision (QString::number (double、char、int)と同じ意味)を指定し、このバイト配列への参照を返します。
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'
[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
に変換されたバイト配列を返す。Aは10、Bは11というように、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 に変換したバイト配列を返す。Aは10、Bは11というように、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
に変換されたバイト配列を返す。Aは10、Bは11というように、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 キャラクタは常にエンコードされます。
例
QByteArraytext= "{あやしい文字列?}";QByteArrayba=text.toPercentEncoding("{}", "s");qDebug("%s", ba.constData()); // "{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
に変換されたバイト配列を返す。Aは10、Bは11というように、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
に変換されたバイト配列を返す。Aは10、Bは11というように、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
に変換されたバイト配列を返す。Aは10、Bは11というように、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
に変換されたバイト配列を返す。Aは10、Bは11というように、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
に変換されたバイト配列を返す。Aは10、Bは11というように、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"
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)
Move-other をこのQByteArray インスタンスに割り当てる。
[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 3.1 以前の Qt バージョンで展開します。
注意:この関数を使用して 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 から最大 バイトを にコピーします。 が または が 0 の場合を除き、 が'˶0'終端であることを保証します。 が の場合は を返し、そうでない場合は を返します。len dst dst nullptr
len dst 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)
これはオーバーロードされた関数である。
'˶'終端文字列lhs がバイト配列rhs と等しくない場合はtrue
を返し、そうでない場合はfalse
を返します。
QByteArray::compare()も参照してください 。
[noexcept, since 6.4]
QByteArray operator""_ba(const char *str, size_t size)
文字列リテラルstr の最初のsize 文字からQByteArray を生成するリテラル演算子。
QByteArray はコンパイル時に作成され、生成された文字列データはコンパイルされたオブジェクト・ファイルの読み取り専用セグメントに格納されます。重複するリテラルは、同じ読み取り専用メモリーを共有することができます。この機能はQByteArrayLiteral と互換性がありますが、コード内に多くの文字列リテラルが存在する場合、タイピングの手間を省くことができます。
次のコードはQByteArray を作成します:
using namespace Qt::Literals::StringLiterals; auto str = "hello"_ba;
この関数は Qt 6.4 で導入されました。
Qt::Literals::StringLiteralsも参照してください 。
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)
これはオーバーロードされた関数です。
'¥0'終端の文字列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)
これはオーバーロードされた関数である。
'˶'終端文字列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)
これはオーバーロードされた関数である。
'˶'終端文字列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)
これはオーバーロードされた関数である。
'˶'終端文字列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)
これはオーバーロードされた関数である。
'˶'終端文字列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()も参照してください 。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.