QByteArray Class
Die Klasse QByteArray stellt ein Array von Bytes zur Verfügung. Mehr...
Kopfzeile: | #include <QByteArray> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- Liste aller Mitglieder, einschließlich vererbter Mitglieder
- Veraltete Mitglieder
- QByteArray ist Teil von Implicitly Shared Classes und Classes for String Data.
Diese Klasse ist stark vergleichbar.
Diese Klasse ist stark vergleichbar mit const char * und QByteArrayView.
Diese Klasse ist stark vergleichbar mit QChar, char16_t, QString, QStringView, QLatin1StringView, und QUtf8StringView.
Beim Vergleich mit String-Typen wird der Inhalt als utf-8 interpretiert.
Hinweis: Alle Funktionen in dieser Klasse sind reentrant.
Öffentliche Typen
class | FromBase64Result |
enum | Base64Option { Base64Encoding, Base64UrlEncoding, KeepTrailingEquals, OmitTrailingEquals, IgnoreBase64DecodingErrors, AbortOnBase64DecodingErrors } |
flags | Base64Options |
const_iterator | |
const_reverse_iterator | |
iterator | |
reverse_iterator |
Öffentliche Funktionen
QByteArray() | |
QByteArray(const char *data, qsizetype size = -1) | |
QByteArray(qsizetype size, Qt::Initialisierung) | |
QByteArray(qsizetype size, char ch) | |
QByteArray(const QByteArray &andere) | |
QByteArray(QByteArray &&andere) | |
~QByteArray() | |
QByteArray & | append(const QByteArray &ba) |
QByteArray & | append(QByteArrayView Daten) |
QByteArray & | append(char ch) |
QByteArray & | append(const char *str) |
QByteArray & (const char *str) | append(const char *str, qsizetype len) |
QByteArray & (const char *str) | append(qsizetype count, char ch) |
(since 6.6) QByteArray & | assign(QByteArrayView v) |
(since 6.6) QByteArray & (QByteArrayView v) | assign(InputIterator erster, InputIterator letzter) |
(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() Konstante |
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 von = 0) const |
(since 6.0) QByteArray & | insert(qsizetype i, QByteArrayView Daten) |
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() konst |
bool | isUpper() konst |
(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 von) const |
(since 6.2) qsizetype | lastIndexOf(QByteArrayView bv) konst |
qsizetype | lastIndexOf(char ch, qsizetype von = -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 Prozent = '%') const |
QByteArray & | prepend(QByteArrayView ba) |
QByteArray & | prepend(char ch) |
QByteArray & | prepend(konst. QByteArray &ba) |
QByteArray & (const QByteArray &ba) | prepend(const char *str) |
QByteArray & | prepend(const char *str, qsizetype len) |
QByteArray & | prepend(qsizetype count, char ch) |
void | push_back(konst. QByteArray &andere) |
(since 6.0) void | push_back(QByteArrayView str) |
void | push_back(char ch) |
void | push_back(const char *str) |
void | push_front(konst. QByteArray &andere) |
(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(Prädikat pred) |
(since 6.5) QByteArray & | removeLast() |
QByteArray::reverse_iterator | rend() |
QByteArray::const_reverse_iterator | rend() Konstante |
QByteArray | repeated(qsizetype mal) const |
QByteArray & | replace(qsizetype pos, qsizetype len, QByteArrayView after) |
(since 6.0) QByteArray & | replace(QByteArrayView vorher, QByteArrayView nachher) |
QByteArray & | replace(char vorher, QByteArrayView nachher) |
QByteArray & | replace(char vorher, char nachher) |
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 Größe) |
(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 Basis = 10) |
QByteArray & | setNum(qulonglong n, int Basis = 10) |
QByteArray & | setNum(short n, int Basis = 10) |
QByteArray & | setNum(uint n, int Basis = 10) |
QByteArray & | setNum(ulong n, int Basis = 10) |
QByteArray & | setNum(ushort n, int Basis = 10) |
QByteArray & | setNum(double n, char format = 'g', int Genauigkeit = 6) |
QByteArray & | setNum(float n, char Format = 'g', int Genauigkeit = 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 &andere) |
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 (bool *ok = nullptr) |
QByteArray | toHex(char Trennzeichen = '\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 |
kurz | 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 &&andere) |
QByteArray & | operator=(const QByteArray &andere) |
QByteArray & | operator=(const char *str) |
char & | operator[](qsizetype i) |
char | operator[](qsizetype i) const |
Statische öffentliche Mitglieder
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) |
Verwandte Nicht-Mitglieder
(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) |
Makros
QByteArrayLiteral(ba) | |
QT_NO_CAST_FROM_BYTEARRAY | |
(since 6.8) | QT_NO_QSNPRINTF |
Detaillierte Beschreibung
QByteArray kann verwendet werden, um sowohl rohe Bytes (einschließlich '\0's) als auch traditionelle 8-bit '\0'-terminierte Strings zu speichern. Die Verwendung von QByteArray ist viel bequemer als die Verwendung von const char *
. Hinter den Kulissen wird immer sichergestellt, dass die Daten von einem '\0'-Terminator gefolgt werden, und es wird implizites Sharing (copy-on-write) verwendet, um die Speichernutzung zu reduzieren und unnötiges Kopieren von Daten zu vermeiden.
Zusätzlich zu QByteArray bietet Qt auch die Klasse QString zum Speichern von String-Daten. Für die meisten Zwecke ist QString die Klasse, die Sie verwenden sollten. Sie versteht ihren Inhalt als Unicode-Text (kodiert mit UTF-16), während QByteArray darauf abzielt, Annahmen über die Kodierung oder Semantik der gespeicherten Bytes zu vermeiden (abgesehen von einigen wenigen Legacy-Fällen, in denen es ASCII verwendet). Außerdem wird QString durchgängig in der Qt API verwendet. Die zwei Hauptfälle, in denen QByteArray geeignet ist, sind, wenn Sie rohe Binärdaten speichern müssen, und wenn Speichererhaltung kritisch ist (z.B. mit Qt für Embedded Linux).
Eine Möglichkeit ein QByteArray zu initialisieren ist einfach eine const char *
an den Konstruktor zu übergeben. Zum Beispiel erzeugt der folgende Code ein Byte-Array der Größe 5, das die Daten "Hello" enthält:
QByteArray ba("Hello");
Obwohl size() 5 ist, enthält das Byte-Array ein zusätzliches '\0'-Byte am Ende, so dass, wenn eine Funktion verwendet wird, die nach einem Zeiger auf die zugrunde liegenden Daten fragt (z.B. ein Aufruf von data()), die Daten, auf die gezeigt wird, garantiert '\0'-terminiert sind.
QByteArray erstellt eine tiefe Kopie der const char *
Daten, so dass Sie diese später ändern können, ohne Seiteneffekte zu erfahren. (Wenn Sie, z.B. aus Leistungsgründen, keine tiefe Kopie der Daten erstellen wollen, verwenden Sie stattdessen QByteArray::fromRawData().)
Ein anderer Ansatz besteht darin, die Größe des Arrays mit resize() festzulegen und die Daten byteweise zu initialisieren. QByteArray verwendet 0-basierte Indizes, genau wie C++-Arrays. Um auf das Byte an einer bestimmten Indexposition zuzugreifen, können Sie operator[]() verwenden. Bei nicht-konstanten Byte-Arrays gibt operator[]() eine Referenz auf ein Byte zurück, das auf der linken Seite einer Zuweisung verwendet werden kann. Ein Beispiel:
QByteArray ba; ba.resize(5); ba[0] = 0x3c; ba[1] = 0xb8; ba[2] = 0x64; ba[3] = 0x18; ba[4] = 0xca;
Für schreibgeschützten Zugriff ist eine alternative Syntax die Verwendung von 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() kann schneller sein als operator[](), da es nie zu einer Tiefenkopie kommt.
Um viele Bytes auf einmal zu extrahieren, verwenden Sie first(), last(), oder sliced().
Ein QByteArray kann '\0' Bytes einbetten. Die Funktion size() gibt immer die Größe des gesamten Arrays zurück, einschließlich der eingebetteten '\0' Bytes, aber ohne das abschließende '\0', das von QByteArray hinzugefügt wurde. Zum Beispiel:
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.
Wenn Sie die Länge der Daten bis zum ersten '\0'-Byte und darüber hinaus erhalten möchten, rufen Sie qstrlen() für das Byte-Array auf.
Nach einem Aufruf von resize() haben die neu zugewiesenen Bytes undefinierte Werte. Um alle Bytes auf einen bestimmten Wert zu setzen, rufen Sie fill() auf.
Um einen Zeiger auf die aktuellen Bytes zu erhalten, rufen Sie data() oder constData() auf. Diese Funktionen geben einen Zeiger auf den Anfang der Daten zurück. Der Zeiger bleibt garantiert gültig, bis eine nicht-konstante Funktion auf dem QByteArray aufgerufen wird. Es ist auch garantiert, dass die Daten mit einem '\0' Byte enden, es sei denn, das QByteArray wurde aus raw data erstellt. Dieses '\0' Byte wird automatisch von QByteArray bereitgestellt und wird in size() nicht gezählt.
QByteArray bietet die folgenden grundlegenden Funktionen zur Modifizierung der Byte-Daten: append(), prepend(), insert(), replace() und remove(). Ein Beispiel:
QByteArray x("and"); x.prepend("rock "); // x == "rock and" x.append(" roll"); // x == "rock and roll" x.replace(5, 3, "&"); // x == "rock & roll"
Im obigen Beispiel sind die ersten beiden Argumente der Funktion replace() die Position, an der mit dem Ersetzen begonnen werden soll, und die Anzahl der Bytes, die ersetzt werden sollen.
Wenn datenverändernde Funktionen die Größe des Arrays erhöhen, können sie zu einer Neuzuweisung von Speicher für das QByteArray Objekt führen. Wenn dies geschieht, expandiert QByteArray um mehr als es unmittelbar benötigt, um Platz für weitere Expansion ohne Neuzuweisung zu haben, bis die Größe des Arrays stark angestiegen ist.
Die Funktionen insert(), remove() und, wenn ein Sub-Array durch ein anderes ersetzt wird, replace() können für große Arrays langsam sein(lineare Zeit), da sie das Verschieben vieler Bytes im Array um mindestens eine Position im Speicher erfordern.
Wenn Sie ein QByteArray schrittweise aufbauen und im Voraus ungefähr wissen, wie viele Bytes das QByteArray enthalten wird, können Sie reserve() aufrufen und QByteArray bitten, eine bestimmte Menge an Speicher vorzubelegen. Sie können auch capacity() aufrufen, um herauszufinden, wie viel Speicher das QByteArray tatsächlich zugewiesen hat.
Beachten Sie, dass die Verwendung von nicht-konstanten Operatoren und Funktionen dazu führen kann, dass QByteArray aufgrund der impliziten gemeinsamen Nutzung eine Tiefenkopie der Daten anfertigt.
QByteArray bietet STL-artige Iteratoren (QByteArray::const_iterator und QByteArray::iterator). In der Praxis sind Iteratoren praktisch, wenn man mit generischen Algorithmen arbeitet, die von der C++ Standardbibliothek bereitgestellt werden.
Hinweis: Iteratoren und Verweise auf einzelne QByteArray-Elemente sind mit Stabilitätsproblemen behaftet. Sie werden oft ungültig, wenn eine QByteArray-verändernde Operation (z.B. insert() oder remove()) aufgerufen wird. Wenn Stabilität und Iterator-ähnliche Funktionalität benötigt wird, sollten Sie Indizes anstelle von Iteratoren verwenden, da diese nicht an den internen Zustand von QByteArray gebunden sind und daher nicht ungültig werden.
Hinweis: Iteratoren über ein QByteArray und Referenzen auf einzelne Bytes innerhalb eines QByteArrays können nicht als gültig angesehen werden, wenn eine nicht-konstante Methode des QByteArrays aufgerufen wird. Der Zugriff auf einen solchen Iterator oder Verweis nach dem Aufruf einer nicht-konstanten Methode führt zu undefiniertem Verhalten. Wenn Stabilität für Iterator-ähnliche Funktionalität erforderlich ist, sollten Sie Indizes anstelle von Iteratoren verwenden, da diese nicht an den internen Zustand von QByteArray gebunden sind und daher nicht ungültig werden.
Wenn Sie alle Vorkommen eines bestimmten Bytes oder einer Folge von Bytes in einem QByteArray finden wollen, verwenden Sie indexOf() oder lastIndexOf(). Ersteres sucht vorwärts ab einer bestimmten Indexposition, letzteres rückwärts. Beide geben die Indexposition der Bytefolge zurück, wenn sie sie finden; andernfalls geben sie -1 zurück. Hier ist zum Beispiel eine typische Schleife, die alle Vorkommen einer bestimmten Zeichenkette findet:
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; }
Wenn Sie einfach prüfen wollen, ob ein QByteArray eine bestimmte Bytefolge enthält, verwenden Sie contains(). Wenn Sie herausfinden wollen, wie oft eine bestimmte Bytefolge in dem Byte-Array vorkommt, verwenden Sie count(). Wenn Sie alle Vorkommen eines bestimmten Wertes durch einen anderen ersetzen wollen, verwenden Sie eine der Überladungen mit zwei Parametern replace().
QByteArrays können mit überladenen Operatoren wie operator<(), operator<=(), operator==(), operator>=() und so weiter verglichen werden. Der Vergleich basiert ausschließlich auf den numerischen Werten der Bytes und ist sehr schnell, aber nicht das, was ein Mensch erwarten würde. QString::localeAwareCompare() ist eine bessere Wahl für die Sortierung von Zeichenketten für die Benutzeroberfläche.
Aus historischen Gründen unterscheidet QByteArray zwischen einem Null Byte Array und einem leeren Byte Array. Ein Null-Byte-Array ist ein Byte-Array, das mit dem Standardkonstruktor von QByteArray oder durch Übergabe von (const char *)0 an den Konstruktor initialisiert wird. Ein leeres Byte-Array ist ein beliebiges Byte-Array mit der Größe 0. Ein leeres Byte-Array ist immer leer, aber ein leeres Byte-Array ist nicht notwendigerweise null:
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
Alle Funktionen außer isNull() behandeln Null-Byte-Arrays genauso wie leere Byte-Arrays. Zum Beispiel gibt data() einen gültigen Zeiger(nicht nullptr) auf ein '\0' Byte für ein Null-Byte-Array zurück und QByteArray() vergleicht gleich mit QByteArray(""). Wir empfehlen, dass Sie immer isEmpty() verwenden und isNull() vermeiden.
Maximale Größe und Out-of-Memory Bedingungen
Die maximale Größe von QByteArray hängt von der Architektur ab. Die meisten 64-Bit-Systeme können mehr als 2 GB Speicher zuweisen, mit einer typischen Grenze von 2^63 Bytes. Der tatsächliche Wert hängt auch von dem für die Verwaltung des Datenblocks erforderlichen Overhead ab. Daher können Sie auf 32-Bit-Plattformen mit einer maximalen Größe von 2 GB abzüglich des Overheads und auf 64-Bit-Plattformen mit 2^63 Byte abzüglich des Overheads rechnen. Die Anzahl der Elemente, die in einem QByteArray gespeichert werden können, entspricht dieser Maximalgröße.
Wenn die Speicherzuweisung fehlschlägt, wirft QByteArray eine std::bad_alloc
Exception, wenn die Anwendung mit Exception-Unterstützung kompiliert wurde. Speicherplatzmangel in Qt Containern ist der einzige Fall, in dem Qt Exceptions auslöst. Wenn Ausnahmen deaktiviert sind, dann ist Speichermangel ein undefiniertes Verhalten.
Beachten Sie, dass das Betriebssystem weitere Beschränkungen für Anwendungen auferlegen kann, die viel zugewiesenen Speicher besitzen, insbesondere große, zusammenhängende Blöcke. Solche Überlegungen, die Konfiguration eines solchen Verhaltens oder jegliche Abhilfe liegen außerhalb des Rahmens der QByteArray API.
C Locale und ASCII Funktionen
QByteArray behandelt Daten im Allgemeinen als Bytes, ohne irgendeine Semantik vorauszusetzen; wo es Semantik voraussetzt, verwendet es die C Locale und ASCII Kodierung. Standard-Unicode-Kodierungen werden von QString unterstützt, andere Kodierungen können mit QStringEncoder und QStringDecoder unterstützt werden, um in Unicode zu konvertieren. Für lokalspezifische Interpretationen von Text verwenden Sie QLocale oder QString.
C-Zeichenketten
Traditionelle C-Strings, auch bekannt als '\0'-terminierte Strings, sind Folgen von Bytes, die durch einen Startpunkt spezifiziert werden und implizit jedes Byte bis zum ersten '\0'-Byte danach einschließen, aber nicht einschließen. Methoden, die einen solchen Zeiger ohne Längenangabe akzeptieren, interpretieren ihn als diese Folge von Bytes. Eine solche Folge kann konstruktionsbedingt kein '\0'-Byte enthalten.
Andere Überladungen akzeptieren einen Start-Zeiger und eine Byte-Anzahl; diese verwenden die angegebene Anzahl von Bytes, die auf die Startadresse folgen, unabhängig davon, ob eines davon ein '\0'-Byte ist. In einigen Fällen, in denen es keine Überladung gibt, die nur einen Zeiger annimmt, führt die Übergabe einer Länge von -1 dazu, dass die Methode den Offset des ersten '\0'-Bytes nach dem Zeiger als Länge verwendet; eine Länge von -1 sollte nur übergeben werden, wenn die Methode dies ausdrücklich vorschreibt (in diesem Fall ist es normalerweise ein Standardargument).
Zwischenraum-Zeichen
Eine häufige Anforderung ist die Entfernung von Leerzeichen aus einem Byte-Array ('\n'
, '\t'
, ' '
, etc.). Wenn Sie Zwischenräume an beiden Enden eines QByteArrays entfernen wollen, verwenden Sie trimmed(). Wenn Sie auch jeden Durchlauf von Abstandszeichen durch ein einzelnes Leerzeichen innerhalb des Byte-Arrays ersetzen wollen, verwenden Sie simplified(). Für diese Zwecke werden nur ASCII-Abstandszeichen erkannt.
Zahl-Zeichen-Umwandlungen
Funktionen, die Konvertierungen zwischen numerischen Datentypen und Zeichenkettendarstellungen durchführen, werden unabhängig von den Gebietsschemaeinstellungen des Benutzers im C-Locale ausgeführt. Verwenden Sie QLocale, um lokalisierte Konvertierungen zwischen Zahlen und Zeichenketten vorzunehmen.
Zeichenfall
In QByteArray ist der Begriff der Groß- und Kleinschreibung und des case-unabhängigen Vergleichs auf ASCII beschränkt. Nicht-ASCII-Zeichen werden ohne Groß-/Kleinschreibung behandelt, da ihre Groß-/Kleinschreibung von der Kodierung abhängt. Dies betrifft Funktionen, die eine Option zur Unterdrückung der Groß-/Kleinschreibung unterstützen oder die die Groß-/Kleinschreibung ihrer Argumente ändern. Zu den Funktionen, die davon betroffen sind, gehören compare(), isLower(), isUpper(), toLower() und toUpper().
Dieses Problem trifft nicht auf QStringzu, da sie Zeichen mit Unicode darstellen.
Siehe auch QByteArrayView, QString, und QBitArray.
Dokumentation der Mitgliedstypen
enum QByteArray::Base64Option
flags QByteArray::Base64Options
Dieses Enum enthält die verfügbaren Optionen für die Kodierung und Dekodierung von Base64. Base64 ist durch RFC 4648 definiert, mit den folgenden Optionen:
Konstante | Wert | Beschreibung |
---|---|---|
QByteArray::Base64Encoding | 0 | (Standard) Das reguläre Base64-Alphabet, einfach "base64" genannt |
QByteArray::Base64UrlEncoding | 1 | Ein alternatives Alphabet, genannt "base64url", das zwei Zeichen im Alphabet ersetzt, um URLs besser zu unterstützen. |
QByteArray::KeepTrailingEquals | 0 | (Standard) Behält die hinteren Füllzeichen am Ende der kodierten Daten bei, so dass die Daten immer ein Vielfaches von vier sind. |
QByteArray::OmitTrailingEquals | 2 | Unterlässt das Hinzufügen der Auffüllungsgleichheitszeichen am Ende der kodierten Daten. |
QByteArray::IgnoreBase64DecodingErrors | 0 | Bei der Dekodierung von Base64-kodierten Daten werden Fehler in der Eingabe ignoriert; ungültige Zeichen werden einfach übersprungen. Dieser Enum-Wert wurde in Qt 5.15 hinzugefügt. |
QByteArray::AbortOnBase64DecodingErrors | 4 | Bei der Dekodierung von Base64-kodierten Daten wird beim ersten Dekodierungsfehler angehalten. Dieser Enum-Wert wurde in Qt 5.15 hinzugefügt. |
QByteArray::fromBase64Encoding() und QByteArray::fromBase64() ignorieren die KeepTrailingEquals und OmitTrailingEquals Optionen. Wenn die Option IgnoreBase64DecodingErrors angegeben ist, werden sie keine Fehler melden, wenn nachgestellte Gleichheitszeichen fehlen oder zu viele von ihnen vorhanden sind. Wenn stattdessen die Option AbortOnBase64DecodingErrors angegeben ist, muss die Eingabe entweder kein Padding oder die richtige Anzahl von Gleichheitszeichen haben.
Der Typ Base64Options ist ein Typedef für QFlags<Base64Option>. Er speichert eine ODER-Kombination von Base64Option-Werten.
QByteArray::const_iterator
Dieses Typedef bietet einen STL-ähnlichen Konst-Iterator für QByteArray.
Siehe auch QByteArray::const_reverse_iterator und QByteArray::iterator.
QByteArray::const_reverse_iterator
Dieses Typedef bietet einen STL-ähnlichen const Reverse-Iterator für QByteArray.
Siehe auch QByteArray::reverse_iterator und QByteArray::const_iterator.
QByteArray::iterator
Dieses Typedef bietet einen STL-ähnlichen nicht-konstanten Iterator für QByteArray.
Siehe auch QByteArray::reverse_iterator und QByteArray::const_iterator.
QByteArray::reverse_iterator
Dieses Typedef bietet einen STL-ähnlichen nicht-konstanten Reverse-Iterator für QByteArray.
Siehe auch QByteArray::const_reverse_iterator und QByteArray::iterator.
Dokumentation der Mitgliedsfunktionen
[static constexpr noexcept, since 6.8]
qsizetype QByteArray::maxSize()
[constexpr noexcept, since 6.8]
qsizetype QByteArray::max_size() const
Sie gibt die maximale Anzahl von Elementen zurück, die das Byte-Array theoretisch aufnehmen kann. In der Praxis kann die Anzahl viel kleiner sein, begrenzt durch die Menge an Speicher, die dem System zur Verfügung steht.
Diese Funktion wurde in Qt 6.8 eingeführt.
const char *QByteArray::operator const char *() const
const void *QByteArray::operator const void *() const
Hinweis: Verwenden Sie in neuem Code stattdessen constData().
Gibt einen Zeiger auf die im Byte-Array gespeicherten Daten zurück. Der Zeiger kann verwendet werden, um auf die Bytes zuzugreifen, aus denen das Array besteht. Die Daten sind '\0'-terminiert.
Der Zeiger bleibt gültig, solange keine Abtrennung erfolgt und die QByteArray nicht geändert wird.
Dieser Operator ist vor allem nützlich, um ein Byte-Array an eine Funktion zu übergeben, die einen const char *
akzeptiert.
Sie können diesen Operator deaktivieren, indem Sie QT_NO_CAST_FROM_BYTEARRAY
definieren, wenn Sie Ihre Anwendungen kompilieren.
Hinweis: Ein QByteArray kann beliebige Byte-Werte einschließlich '\0' speichern, aber die meisten Funktionen, die char *
Argumente annehmen, gehen davon aus, dass die Daten am ersten '\0' enden, auf den sie treffen.
Siehe auch constData().
QByteArray QByteArray::left(qsizetype len) &&
QByteArray QByteArray::left(qsizetype len) const &
Gibt ein Byte-Array zurück, das die ersten len Bytes dieses Byte-Arrays enthält.
Wenn Sie wissen, dass len nicht außerhalb der Grenzen liegen kann, verwenden Sie stattdessen first() in neuem Code, da dies schneller ist.
Das gesamte Byte-Array wird zurückgegeben, wenn len größer ist als size().
Gibt ein leeres QByteArray zurück, wenn len kleiner als 0 ist.
Siehe auch first(), last(), startsWith(), chopped(), chop(), und truncate().
QByteArray QByteArray::right(qsizetype len) &&
QByteArray QByteArray::right(qsizetype len) const &
Gibt ein Byte-Array zurück, das die letzten len Bytes dieses Byte-Arrays enthält.
Wenn Sie wissen, dass len nicht außerhalb der Grenzen liegen kann, verwenden Sie stattdessen last() in neuem Code, da dies schneller ist.
Das gesamte Byte-Array wird zurückgegeben, wenn len größer ist als size().
Gibt ein leeres QByteArray zurück, wenn len kleiner als 0 ist.
Siehe auch endsWith(), last(), first(), sliced(), chopped(), chop(), truncate(), und slice().
QByteArray QByteArray::mid(qsizetype pos, qsizetype len = -1) &&
QByteArray QByteArray::mid(qsizetype pos, qsizetype len = -1) const &
Gibt ein Byte-Array zurück, das len Bytes aus diesem Byte-Array enthält, beginnend an der Position pos.
Wenn Sie wissen, dass pos und len nicht außerhalb der Grenzen liegen können, verwenden Sie stattdessen sliced() in neuem Code, da dies schneller ist.
Wenn len -1 ist (die Vorgabe) oder pos + len >= size(), wird ein Byte-Array zurückgegeben, das alle Bytes ab Position pos bis zum Ende des Byte-Arrays enthält.
Siehe auch first(), last(), sliced(), chopped(), chop(), truncate(), und slice().
[since 6.0]
QByteArray QByteArray::first(qsizetype n) &&
[since 6.0]
QByteArray QByteArray::first(qsizetype n) const &
Gibt die ersten n Bytes des Byte-Arrays zurück.
Hinweis: Das Verhalten ist undefiniert, wenn n < 0 oder n > size().
Beispiel:
QByteArray x("Pineapple"); QByteArray y = x.first(4); // y == "Pine"
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch last(), sliced(), startsWith(), chopped(), chop(), truncate(), und slice().
[since 6.0]
QByteArray QByteArray::last(qsizetype n) &&
[since 6.0]
QByteArray QByteArray::last(qsizetype n) const &
Gibt die letzten n Bytes des Byte-Arrays zurück.
Hinweis: Das Verhalten ist undefiniert, wenn n < 0 oder n > size().
Beispiel:
QByteArray x("Pineapple"); QByteArray y = x.last(5); // y == "apple"
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch first(), sliced(), endsWith(), chopped(), chop(), truncate(), und slice().
[since 6.0]
QByteArray QByteArray::sliced(qsizetype pos, qsizetype n) &&
[since 6.0]
QByteArray QByteArray::sliced(qsizetype pos, qsizetype n) const &
Gibt ein Byte-Array zurück, das die n Bytes dieses Objekts ab der Position pos enthält.
Hinweis: Das Verhalten ist undefiniert, wenn pos < 0, n < 0, oder pos + n > size().
Beispiel:
QByteArray x("Five pineapples"); QByteArray y = x.sliced(5, 4); // y == "pine" QByteArray z = x.sliced(5); // z == "pineapples"
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch first(), last(), chopped(), chop(), truncate(), und slice().
[since 6.0]
QByteArray QByteArray::sliced(qsizetype pos) &&
[since 6.0]
QByteArray QByteArray::sliced(qsizetype pos) const &
Dies ist eine überladene Funktion.
Gibt ein Byte-Array zurück, das die Bytes enthält, die an der Position pos in diesem Objekt beginnen und bis zum Ende des Objekts reichen.
Hinweis: Das Verhalten ist undefiniert, wenn pos < 0 oder pos > size().
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch first(), last(), chopped(), chop(), truncate(), und slice().
QByteArray QByteArray::chopped(qsizetype len) &&
QByteArray QByteArray::chopped(qsizetype len) const &
Gibt ein Byte-Array zurück, das die äußersten linken size() - len Bytes dieses Byte-Arrays enthält.
Hinweis: Das Verhalten ist undefiniert, wenn len negativ oder größer als size() ist.
Siehe auch endsWith(), first(), last(), sliced(), chop(), truncate(), und slice().
[static]
QByteArray::FromBase64Result QByteArray::fromBase64Encoding(QByteArray &&base64, QByteArray::Base64Options options = Base64Encoding)
[static]
QByteArray::FromBase64Result QByteArray::fromBase64Encoding(const QByteArray &base64, QByteArray::Base64Options options = Base64Encoding)
Dies ist eine überladene Funktion.
Dekodiert das Base64-Array base64 unter Verwendung der durch options definierten Optionen. Wenn options IgnoreBase64DecodingErrors
enthält (die Vorgabe), wird die Eingabe nicht auf Gültigkeit geprüft; ungültige Zeichen in der Eingabe werden übersprungen, so dass der Dekodierungsprozess mit den nachfolgenden Zeichen fortgesetzt werden kann. Wenn options AbortOnBase64DecodingErrors
enthält, wird die Dekodierung beim ersten ungültigen Zeichen abgebrochen.
Ein Beispiel:
void process(const QByteArray &); if (auto result = QByteArray::fromBase64Encoding(encodedData)) process(*result);
Der Algorithmus zur Dekodierung von Base64-kodierten Daten ist in RFC 4648 definiert.
Gibt ein QByteArrayFromBase64Result-Objekt zurück, das die dekodierten Daten und ein Flag enthält, das angibt, ob die Dekodierung erfolgreich war. Wenn die Option AbortOnBase64DecodingErrors
übergeben wurde und die Eingabedaten ungültig waren, ist nicht spezifiziert, was die dekodierten Daten enthalten.
Siehe auch toBase64().
[constexpr noexcept]
QByteArray::QByteArray()
Konstruiert ein leeres Byte-Array.
Siehe auch isEmpty().
QByteArray::QByteArray(const char *data, qsizetype size = -1)
Konstruiert ein Byte-Array, das die ersten size Bytes des Arrays data enthält.
Wenn data gleich 0 ist, wird ein Null-Byte-Array erstellt.
Wenn size negativ ist, wird angenommen, dass data auf einen '\0'-terminierten String zeigt und seine Länge dynamisch bestimmt wird.
QByteArray erstellt eine tiefe Kopie der String-Daten.
Siehe auch fromRawData().
QByteArray::QByteArray(qsizetype size, Qt::Initialization)
Konstruiert ein Byte-Array der Größe size mit uninitialisiertem Inhalt.
QByteArray::QByteArray(qsizetype size, char ch)
Konstruiert ein Byte-Array der Größe size, wobei jedes Byte auf ch gesetzt wird.
Siehe auch fill().
[noexcept]
QByteArray::QByteArray(const QByteArray &other)
Konstruiert eine Kopie von other.
Dieser Vorgang benötigt konstante Zeit, da QByteArray implizit gemeinsam genutzt wird. Dies macht die Rückgabe eines QByteArray aus einer Funktion sehr schnell. Wenn eine gemeinsam genutzte Instanz geändert wird, wird sie kopiert (copy-on-write), was lineare Zeit benötigt.
Siehe auch operator=().
[noexcept]
QByteArray::QByteArray(QByteArray &&other)
Move-konstruiert eine QByteArray-Instanz, die auf das gleiche Objekt zeigt, auf das other gezeigt hat.
[noexcept]
QByteArray::~QByteArray()
Zerstört das Byte-Array.
QByteArray &QByteArray::append(const QByteArray &ba)
Hängt das Byte-Array ba an das Ende dieses Byte-Arrays an.
Beispiel:
QByteArray x("free"); QByteArray y("dom"); x.append(y); // x == "freedom"
Dies ist dasselbe wie insert(size(), ba).
Hinweis: QByteArray ist eine implizit gemeinsam genutzte Klasse. Wenn Sie also an ein leeres Byte-Array anhängen, teilt das Byte-Array nur die Daten, die in ba gehalten werden. In diesem Fall werden keine Daten kopiert, was konstante Zeit benötigt. Wenn eine gemeinsam genutzte Instanz geändert wird, wird sie kopiert (copy-on-write), was lineare Zeit benötigt.
Wenn das Byte-Array, an das angehängt wird, nicht leer ist, wird eine Tiefenkopie der Daten durchgeführt, was lineare Zeit benötigt.
Die Funktion append() ist in der Regel sehr schnell(konstante Zeit), da QByteArray zusätzlichen Speicherplatz am Ende der Daten zuweist, so dass sie wachsen kann, ohne jedes Mal das gesamte Array neu zuzuweisen.
Siehe auch operator+=(), prepend(), und insert().
QByteArray &QByteArray::append(QByteArrayView data)
Dies ist eine überladene Funktion.
Hängt data an dieses Byte-Array an.
QByteArray &QByteArray::append(char ch)
Dies ist eine überladene Funktion.
Hängt das Byte ch an dieses Byte-Array an.
QByteArray &QByteArray::append(const char *str)
Dies ist eine überladene Funktion.
Hängt die '\0'-terminierte Zeichenkette str an dieses Byte-Array an.
QByteArray &QByteArray::append(const char *str, qsizetype len)
Dies ist eine überladene Funktion.
Hängt die ersten len Bytes beginnend bei str an dieses Byte-Array an und gibt einen Verweis auf dieses Byte-Array zurück. Die angehängten Bytes können '\0'-Bytes enthalten.
Wenn len negativ ist, wird str als '\0'-terminierter String angenommen und die zu kopierende Länge wird automatisch mit qstrlen() bestimmt.
Wenn len gleich Null oder str gleich Null ist, wird nichts an das Byte-Array angehängt. Stellen Sie sicher, dass len nicht länger als str ist.
QByteArray &QByteArray::append(qsizetype count, char ch)
Dies ist eine überladene Funktion.
Hängt count Kopien des Bytes ch an dieses Byte-Array an und gibt eine Referenz auf dieses Byte-Array zurück.
Wenn count negativ oder Null ist, wird nichts an das Byte-Array angehängt.
[since 6.6]
QByteArray &QByteArray::assign(QByteArrayView v)
Ersetzt den Inhalt dieses Byte-Arrays durch eine Kopie von v und gibt einen Verweis auf dieses Byte-Array zurück.
Die Größe dieses Byte-Arrays ist gleich der Größe von v.
Diese Funktion weist nur dann Speicher zu, wenn die Größe von v die Kapazität dieses Byte-Arrays überschreitet oder dieses Byte-Array gemeinsam genutzt wird.
Diese Funktion wurde in Qt 6.6 eingeführt.
[since 6.6]
template <typename InputIterator, QByteArray::if_input_iterator<InputIterator> = true> QByteArray &QByteArray::assign(InputIterator first, InputIterator last)
Ersetzt den Inhalt dieses Byte-Arrays durch eine Kopie der Elemente im Iteratorbereich [first, last) und gibt eine Referenz auf dieses Byte-Array zurück.
Die Größe dieses Byte-Arrays ist gleich der Anzahl der Elemente im Bereich [first, last).
Diese Funktion wird nur dann Speicher zuweisen, wenn die Anzahl der Elemente im Bereich die Kapazität dieses Byte-Arrays übersteigt oder dieses Byte-Array gemeinsam genutzt wird.
Hinweis: Diese Funktionsüberladung nimmt nur an der Überladungsauflösung teil, wenn InputIterator
die Anforderungen eines LegacyInputIterators erfüllt.
Hinweis: Das Verhalten ist undefiniert, wenn eines der Argumente ein Iterator in *this ist oder [first, last) kein gültiger Bereich ist.
Diese Funktion wurde in Qt 6.6 eingeführt.
[since 6.6]
QByteArray &QByteArray::assign(qsizetype n, char c)
Ersetzt den Inhalt dieses Byte-Arrays durch n Kopien von c und gibt einen Verweis auf dieses Byte-Array zurück.
Die Größe dieses Byte-Arrays ist gleich n, die nicht negativ sein darf.
Diese Funktion weist nur dann Speicher zu, wenn n die Kapazität dieses Byte-Arrays überschreitet oder dieses Byte-Array gemeinsam genutzt wird.
Diese Funktion wurde in Qt 6.6 eingeführt.
Siehe auch fill().
char QByteArray::at(qsizetype i) const
Gibt das Byte an der Indexposition i im Byte-Array zurück.
i muss eine gültige Indexposition im Byte-Array sein (d.h. 0 <= i < size()).
Siehe auch operator[]().
char &QByteArray::back()
Gibt einen Verweis auf das letzte Byte im Byte-Array zurück. Dasselbe wie operator[](size() - 1)
.
Diese Funktion wird aus Gründen der STL-Kompatibilität bereitgestellt.
Warnung: Der Aufruf dieser Funktion bei einem leeren Byte-Array führt zu undefiniertem Verhalten.
Siehe auch front(), at(), und operator[]().
char QByteArray::back() const
Gibt das letzte Byte im Byte-Array zurück. Dasselbe wie at(size() - 1)
.
Diese Funktion wird aus Gründen der STL-Kompatibilität bereitgestellt.
Warnung: Der Aufruf dieser Funktion bei einem leeren Byte-Array führt zu undefiniertem Verhalten.
Siehe auch front(), at(), und operator[]().
QByteArray::iterator QByteArray::begin()
Gibt einen Iterator im STL-Stil zurück, der auf das erste Byte im Byte-Array zeigt.
Warnung: Der zurückgegebene Iterator wird ungültig, wenn er abgetrennt wird oder wenn die QByteArray geändert wird.
Siehe auch constBegin() und end().
[noexcept]
QByteArray::const_iterator QByteArray::begin() const
Diese Funktion überlastet begin().
qsizetype QByteArray::capacity() const
Gibt die maximale Anzahl von Bytes zurück, die in dem Byte-Array gespeichert werden können, ohne eine Neuzuweisung zu erzwingen.
Der einzige Zweck dieser Funktion besteht darin, die Speichernutzung von QByteArray fein abzustimmen. Im Allgemeinen werden Sie diese Funktion nur selten aufrufen müssen. Wenn Sie wissen wollen, wie viele Bytes sich in dem Byte-Array befinden, rufen Sie size() auf.
Hinweis: Ein statisch zugewiesenes Byte-Array meldet eine Kapazität von 0, auch wenn es nicht leer ist.
Hinweis: Die Position des freien Speicherplatzes im zugewiesenen Speicherblock ist undefiniert. Mit anderen Worten, man sollte nicht davon ausgehen, dass sich der freie Speicher immer hinter den initialisierten Elementen befindet.
Siehe auch reserve() und squeeze().
[noexcept]
QByteArray::const_iterator QByteArray::cbegin() const
Gibt einen const STL-artigen Iterator zurück, der auf das erste Byte im Byte-Array zeigt.
Warnung: Der zurückgegebene Iterator wird ungültig, wenn er abgetrennt wird oder wenn die QByteArray geändert wird.
Siehe auch begin() und cend().
[noexcept]
QByteArray::const_iterator QByteArray::cend() const
Gibt einen const STL-artigen Iterator zurück, der direkt auf das letzte Byte im Byte-Array zeigt.
Warnung: Der zurückgegebene Iterator wird ungültig, wenn er abgetrennt wird oder wenn die QByteArray geändert wird.
Siehe auch cbegin() und end().
void QByteArray::chop(qsizetype n)
Entfernt n Bytes vom Ende des Byte-Arrays.
Wenn n größer ist als size(), ist das Ergebnis ein leeres Byte-Array.
Beispiel:
QByteArray ba("STARTTLS\r\n"); ba.chop(2); // ba == "STARTTLS"
Siehe auch truncate(), resize(), und first().
void QByteArray::clear()
Löscht den Inhalt des Byte-Arrays und macht ihn null.
Siehe auch resize() und isNull().
[noexcept, since 6.0]
int QByteArray::compare(QByteArrayView bv, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
Gibt eine ganze Zahl zurück, die kleiner, gleich oder größer als Null ist, je nachdem, ob diese QByteArray vor, an der gleichen Position wie oder nach der QByteArrayView bv sortiert ist. Der Vergleich wird unter Berücksichtigung der Groß- und Kleinschreibung cs durchgeführt.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch operator== und Character Case.
[noexcept]
QByteArray::const_iterator QByteArray::constBegin() const
Gibt einen const STL-artigen Iterator zurück, der auf das erste Byte im Byte-Array zeigt.
Warnung: Der zurückgegebene Iterator wird ungültig, wenn er abgetrennt wird oder wenn die QByteArray geändert wird.
Siehe auch begin() und constEnd().
[noexcept]
const char *QByteArray::constData() const
Liefert einen Zeiger auf die in dem Byte-Array gespeicherten Konstanten-Daten. Der Zeiger kann verwendet werden, um auf die Bytes zuzugreifen, aus denen das Array besteht. Die Daten sind '\0'-terminiert, es sei denn, das Objekt QByteArray wurde aus Rohdaten erstellt.
Der Zeiger bleibt gültig, solange keine Abtrennung erfolgt und die QByteArray nicht verändert wird.
Diese Funktion ist vor allem nützlich, um ein Byte-Array an eine Funktion zu übergeben, die ein const char *
akzeptiert.
Hinweis: Ein QByteArray kann beliebige Byte-Werte einschließlich '\0' speichern, aber die meisten Funktionen, die char *
Argumente annehmen, gehen davon aus, dass die Daten am ersten '\0' enden, auf den sie treffen.
Siehe auch data(), operator[](), und fromRawData().
[noexcept]
QByteArray::const_iterator QByteArray::constEnd() const
Gibt einen const STL-artigen Iterator zurück, der direkt auf das letzte Byte im Byte-Array zeigt.
Warnung: Der zurückgegebene Iterator wird ungültig, wenn er abgetrennt wird oder wenn die QByteArray geändert wird.
Siehe auch constBegin() und end().
[since 6.0]
bool QByteArray::contains(QByteArrayView bv) const
Gibt true
zurück, wenn dieses Byte-Array ein Vorkommen der von bv betrachteten Byte-Folge enthält; andernfalls wird false
zurückgegeben.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch indexOf() und count().
bool QByteArray::contains(char ch) const
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn das Byte-Array das Byte ch enthält; andernfalls gibt sie false
zurück.
[since 6.0]
qsizetype QByteArray::count(QByteArrayView bv) const
Gibt die Anzahl der (sich möglicherweise überschneidenden) Vorkommen der von bv betrachteten Bytefolge in diesem Byte-Array zurück.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch contains() und indexOf().
qsizetype QByteArray::count(char ch) const
Dies ist eine überladene Funktion.
Gibt die Anzahl der Vorkommen des Bytes ch im Byte-Array zurück.
Siehe auch contains() und indexOf().
[noexcept]
QByteArray::const_reverse_iterator QByteArray::crbegin() const
Gibt einen const STL-artigen Reverse-Iterator zurück, der auf das erste Byte im Byte-Array zeigt, in umgekehrter Reihenfolge.
Warnung: Der zurückgegebene Iterator wird ungültig, wenn er abgetrennt wird oder wenn QByteArray geändert wird.
Siehe auch begin(), rbegin(), und rend().
[noexcept]
QByteArray::const_reverse_iterator QByteArray::crend() const
Gibt einen const STL-artigen Reverse-Iterator zurück, der in umgekehrter Reihenfolge direkt auf das letzte Byte im Byte-Array zeigt.
Warnung: Der zurückgegebene Iterator wird ungültig, wenn er abgetrennt wird oder wenn QByteArray geändert wird.
Siehe auch end(), rend(), und rbegin().
char *QByteArray::data()
Gibt einen Zeiger auf die im Byte-Array gespeicherten Daten zurück. Mit dem Zeiger kann auf die Bytes, aus denen das Array besteht, zugegriffen und diese verändert werden. Die Daten sind '\0'-terminiert, d.h. die Anzahl der Bytes, auf die Sie nach dem zurückgegebenen Zeiger zugreifen können, ist size() + 1, einschließlich des '\0'-Terminators.
Beispiel:
QByteArray ba("Hello world"); char *data = ba.data(); while (*data) { cout << "[" << *data << "]" << endl; ++data; }
Der Zeiger bleibt gültig, solange keine Abtrennung erfolgt und die QByteArray nicht geändert wird.
Bei Nur-Lese-Zugriffen ist constData() schneller, da es nie zu einer Tiefenkopie kommt.
Diese Funktion ist vor allem nützlich, um ein Byte-Array an eine Funktion zu übergeben, die ein const char *
akzeptiert.
Das folgende Beispiel erstellt eine Kopie des von data() zurückgegebenen char*, aber es wird den Heap beschädigen und einen Absturz verursachen, weil es kein Byte für das '\0' am Ende zuweist:
QString tmp = "test"; QByteArray text = tmp.toLocal8Bit(); char *data = new char[text.size()]; strcpy(data, text.data()); delete [] data;
Hier wird die richtige Menge an Speicherplatz zugewiesen:
QString tmp = "test"; QByteArray text = tmp.toLocal8Bit(); char *data = new char[text.size() + 1]; strcpy(data, text.data()); delete [] data;
Hinweis: Eine QByteArray kann beliebige Byte-Werte einschließlich '\0' speichern, aber die meisten Funktionen, die char *
Argumente annehmen, gehen davon aus, dass die Daten am ersten '\0' enden, auf den sie stoßen.
Siehe auch constData() und operator[]().
[noexcept]
const char *QByteArray::data() const
Dies ist eine überladene Funktion.
QByteArray::iterator QByteArray::end()
Gibt einen STL-ähnlichen Iterator zurück, der direkt auf das letzte Byte im Byte-Array zeigt.
Warnung: Der zurückgegebene Iterator wird ungültig, wenn er abgetrennt wird oder wenn die QByteArray geändert wird.
Siehe auch begin() und constEnd().
[noexcept]
QByteArray::const_iterator QByteArray::end() const
Diese Funktion überlastet end().
[since 6.0]
bool QByteArray::endsWith(QByteArrayView bv) const
Gibt true
zurück, wenn dieses Byte-Array mit der von bv betrachteten Bytefolge endet; andernfalls wird false
zurückgegeben.
Beispiel:
QByteArray url("http://qt-project.org/doc/qt-5.0/qtdoc/index.html"); if (url.endsWith(".html")) ...
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch startsWith() und last().
bool QByteArray::endsWith(char ch) const
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn dieses Byte-Array mit dem Byte ch endet; andernfalls gibt sie false
zurück.
[since 6.1]
QByteArray::iterator QByteArray::erase(QByteArray::const_iterator first, QByteArray::const_iterator last)
Entfernt aus dem Byte-Array die Zeichen im halboffenen Bereich [ first, last ). Gibt einen Iterator zu dem Zeichen zurück, auf das last vor dem Löschen verweist.
Diese Funktion wurde in Qt 6.1 eingeführt.
[since 6.5]
QByteArray::iterator QByteArray::erase(QByteArray::const_iterator it)
Dies ist eine überladene Funktion.
Entfernt das durch it
bezeichnete Zeichen aus dem Byte-Array. Gibt einen Iterator zu dem Zeichen unmittelbar nach dem gelöschten Zeichen zurück.
QByteArray ba = "abcdefg"; auto it = ba.erase(ba.cbegin()); // ba is now "bcdefg" and it points to "b"
Diese Funktion wurde in Qt 6.5 eingeführt.
QByteArray &QByteArray::fill(char ch, qsizetype size = -1)
Setzt jedes Byte im Byte-Array auf ch. Wenn size ungleich -1 ist (die Vorgabe), wird das Byte-Array vorher auf die Größe size angepasst.
Beispiel:
QByteArray ba("Istambul"); ba.fill('o'); // ba == "oooooooo" ba.fill('X', 2); // ba == "XX"
Siehe auch resize().
[static]
QByteArray QByteArray::fromBase64(const QByteArray &base64, QByteArray::Base64Options options = Base64Encoding)
Gibt eine dekodierte Kopie des Base64-Arrays base64 zurück, wobei die durch options definierten Optionen verwendet werden. Wenn options IgnoreBase64DecodingErrors
enthält (Standardeinstellung), wird die Eingabe nicht auf Gültigkeit geprüft; ungültige Zeichen in der Eingabe werden übersprungen, so dass der Dekodierungsprozess mit den nachfolgenden Zeichen fortgesetzt werden kann. Wenn options AbortOnBase64DecodingErrors
enthält, wird die Dekodierung beim ersten ungültigen Zeichen abgebrochen.
Ein Beispiel:
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>"
Der Algorithmus zur Dekodierung von Base64-kodierten Daten ist in RFC 4648 definiert.
Gibt die dekodierten Daten zurück, oder, wenn die Option AbortOnBase64DecodingErrors
übergeben wurde und die Eingabedaten ungültig waren, ein leeres Byte-Array.
Hinweis: Die Funktion fromBase64Encoding() wird in neuem Code empfohlen.
Siehe auch toBase64() und fromBase64Encoding().
[static]
QByteArray QByteArray::fromCFData(CFDataRef data)
Konstruiert eine neue QByteArray, die eine Kopie der CFData data enthält.
Siehe auch fromRawCFData(), fromRawData(), toRawCFData(), und toCFData().
[static, since 6.5]
QByteArray QByteArray::fromEcmaUint8Array(emscripten::val uint8array)
Konstruiert ein neues QByteArray, das eine Kopie des Uint8Array uint8array enthält.
Diese Funktion überträgt Daten aus einem JavaScript-Datenpuffer - der von C++-Code aus nicht adressierbar ist - in den Heap-Speicher, der einem QByteArray gehört. Das Uint8Array kann freigegeben werden, sobald diese Funktion zurückkehrt und eine Kopie erstellt wurde.
Das Argument uint8array muss ein emscripten::val sein, das auf ein Uint8Array-Objekt verweist, das z.B. aus einer globalen JavaScript-Variablen stammt:
emscripten::val uint8array = emscripten::val::global("g_uint8array"); QByteArray byteArray = QByteArray::fromEcmaUint8Array(uint8array);
Diese Funktion gibt eine Null QByteArray zurück, wenn die Größe des Uint8Array die maximale Kapazität von QByteArray überschreitet, oder wenn das Argument uint8array nicht vom Typ Uint8Array ist.
Diese Funktion wurde in Qt 6.5 eingeführt.
Siehe auch toEcmaUint8Array().
[static]
QByteArray QByteArray::fromHex(const QByteArray &hexEncoded)
Gibt eine dekodierte Kopie des hexadezimal kodierten Arrays hexEncoded zurück. Die Eingabe wird nicht auf Gültigkeit geprüft; ungültige Zeichen in der Eingabe werden übersprungen, so dass der Dekodierungsprozess mit den nachfolgenden Zeichen fortgesetzt werden kann.
Zum Beispiel:
QByteArray text = QByteArray::fromHex("517420697320677265617421"); text.data(); // returns "Qt is great!"
Siehe auch toHex().
[static]
QByteArray QByteArray::fromNSData(const NSData *data)
Konstruiert eine neue QByteArray, die eine Kopie der NSData data enthält.
Siehe auch fromRawNSData(), fromRawData(), toNSData(), und toRawNSData().
[static]
QByteArray QByteArray::fromPercentEncoding(const QByteArray &input, char percent = '%')
Dekodiert input aus der URI/URL-ähnlichen Prozentkodierung.
Gibt ein Byte-Array zurück, das den dekodierten Text enthält. Der Parameter percent erlaubt die Verwendung eines anderen Zeichens als "%" (z. B. "_" oder "=") als Escape-Zeichen. Äquivalent zu input.percentDecoded(Prozent).
Zum Beispiel:
QByteArray text = QByteArray::fromPercentEncoding("Qt%20ist%20groß%33");qDebug("%s", text.data()); // reports "Qt is great!"
Siehe auch percentDecoded().
[static]
QByteArray QByteArray::fromRawCFData(CFDataRef data)
Konstruiert eine QByteArray, die die Bytes der CFData data verwendet.
Die Bytes von data werden nicht kopiert.
Der Aufrufer garantiert, dass die CFData nicht gelöscht oder verändert wird, solange dieses QByteArray Objekt existiert.
Siehe auch fromCFData(), fromRawData(), toRawCFData(), und toCFData().
[static]
QByteArray QByteArray::fromRawData(const char *data, qsizetype size)
Konstruiert ein QByteArray, das die ersten size Bytes des data Arrays verwendet. Die Bytes werden nicht kopiert. Der QByteArray enthält den Zeiger data. Der Aufrufer garantiert, dass data nicht gelöscht oder verändert wird, solange diese QByteArray und alle Kopien davon existieren, die nicht verändert wurden. Mit anderen Worten: Da QByteArray eine implizit gemeinsam genutzte Klasse ist und die von dieser Funktion zurückgegebene Instanz den Zeiger data enthält, darf der Aufrufer data nicht löschen oder direkt verändern, solange die zurückgegebene QByteArray und alle Kopien existieren. Allerdings übernimmt QByteArray nicht den Besitz von data, so dass der Destruktor QByteArray niemals den rohen data löschen wird, selbst wenn der letzte QByteArray, der auf data verweist, zerstört wird.
Ein anschließender Versuch, den Inhalt des zurückgegebenen QByteArray oder einer daraus erstellten Kopie zu ändern, führt dazu, dass eine Deep Copy des data Arrays erstellt wird, bevor die Änderung durchgeführt wird. Dadurch wird sichergestellt, dass das rohe Array data selbst niemals von QByteArray verändert wird.
Hier ist ein Beispiel dafür, wie man Daten mit einem QDataStream auf Rohdaten im Speicher liest, ohne die Rohdaten in ein QByteArray zu kopieren:
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); ...
Warnung: Ein mit fromRawData() erstelltes Byte-Array ist nicht '\0'-terminiert, es sei denn, die Rohdaten enthalten ein '\0'-Byte an der Position size. Während dies für QDataStream oder Funktionen wie indexOf() keine Rolle spielt, schlägt die Übergabe des Byte-Arrays an eine Funktion, die ein const char *
akzeptiert, das '\0'-terminiert sein soll, fehl.
Siehe auch setRawData(), data(), und constData().
[static]
QByteArray QByteArray::fromRawNSData(const NSData *data)
Konstruiert eine QByteArray, die die Bytes der NSData data verwendet.
Die Bytes von data werden nicht kopiert.
Der Aufrufer garantiert, dass die NSData nicht gelöscht oder verändert wird, solange dieses QByteArray Objekt existiert.
Siehe auch fromNSData(), fromRawData(), toRawNSData(), und toNSData().
[static]
QByteArray QByteArray::fromStdString(const std::string &str)
Gibt eine Kopie der Zeichenkette str als QByteArray zurück.
Siehe auch toStdString() und QString::fromStdString().
char &QByteArray::front()
Gibt einen Verweis auf das erste Byte im Byte-Array zurück. Dasselbe wie operator[](0)
.
Diese Funktion wird aus Gründen der STL-Kompatibilität bereitgestellt.
Warnung: Der Aufruf dieser Funktion bei einem leeren Byte-Array führt zu undefiniertem Verhalten.
Siehe auch back(), at(), und operator[]().
char QByteArray::front() const
Gibt das erste Byte im Byte-Array zurück. Dasselbe wie at(0)
.
Diese Funktion wird aus Gründen der STL-Kompatibilität bereitgestellt.
Warnung: Der Aufruf dieser Funktion bei einem leeren Byte-Array führt zu undefiniertem Verhalten.
Siehe auch back(), at(), und operator[]().
[since 6.0]
qsizetype QByteArray::indexOf(QByteArrayView bv, qsizetype from = 0) const
Gibt die Indexposition des Beginns des ersten Vorkommens der von bv betrachteten Bytefolge in diesem Byte-Array zurück, wobei ab der Indexposition from vorwärts gesucht wird. Gibt -1 zurück, wenn keine Übereinstimmung gefunden wird.
Beispiel:
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
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch lastIndexOf(), contains(), und count().
qsizetype QByteArray::indexOf(char ch, qsizetype from = 0) const
Dies ist eine überladene Funktion.
Gibt die Indexposition des Beginns des ersten Vorkommens des Byte ch in diesem Byte-Array zurück, wobei ab der Indexposition from vorwärts gesucht wird. Gibt -1 zurück, wenn keine Übereinstimmung gefunden wird.
Beispiel:
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
Siehe auch lastIndexOf() und contains().
[since 6.0]
QByteArray &QByteArray::insert(qsizetype i, QByteArrayView data)
Fügt data an der Indexposition i ein und gibt einen Verweis auf dieses Byte-Array zurück.
Beispiel:
QByteArray ba("Meal"); ba.insert(1, QByteArrayView("ontr")); // ba == "Montreal"
Bei großen Byte-Arrays kann dieser Vorgang langsam sein(lineare Zeit), da er erfordert, dass alle Bytes an den Indizes i und darüber um mindestens eine Position weiter im Speicher verschoben werden.
Dieses Array wächst, um das Einfügen zu ermöglichen. Wenn i über das Ende des Arrays hinausgeht, wird das Array zunächst mit Leerzeichen erweitert, um dieses i zu erreichen.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch append(), prepend(), replace(), und remove().
QByteArray &QByteArray::insert(qsizetype i, const QByteArray &data)
Fügt data an der Indexposition i ein und gibt einen Verweis auf dieses Byte-Array zurück.
Dieses Array wächst, um das Einfügen zu ermöglichen. Wenn i hinter dem Ende des Arrays liegt, wird das Array zunächst mit Leerzeichen erweitert, um dieses i zu erreichen.
Siehe auch append(), prepend(), replace(), und remove().
QByteArray &QByteArray::insert(qsizetype i, const char *s)
Fügt s an der Indexposition i ein und gibt einen Verweis auf dieses Byte-Array zurück.
Dieses Array wächst, um das Einfügen zu ermöglichen. Wenn i über das Ende des Arrays hinausgeht, wird das Array zunächst mit Leerzeichen erweitert, um dieses i zu erreichen.
Die Funktion ist äquivalent zu insert(i, QByteArrayView(s))
Siehe auch append(), prepend(), replace(), und remove().
QByteArray &QByteArray::insert(qsizetype i, char ch)
Dies ist eine überladene Funktion.
Fügt das Byte ch an der Indexposition i in das Byte-Array ein.
Dieses Array wächst, um die Einfügung aufzunehmen. Wenn i über das Ende des Arrays hinausgeht, wird das Array zunächst mit Leerzeichen erweitert, um dieses i zu erreichen.
QByteArray &QByteArray::insert(qsizetype i, const char *data, qsizetype len)
Dies ist eine überladene Funktion.
Fügt len Bytes, beginnend mit data, an der Position i in das Byte-Array ein.
Dieses Array wächst, um das Einfügen zu ermöglichen. Wenn i über das Ende des Arrays hinausgeht, wird das Array zunächst mit Leerzeichen erweitert, um dieses i zu erreichen.
QByteArray &QByteArray::insert(qsizetype i, qsizetype count, char ch)
Dies ist eine überladene Funktion.
Fügt count Kopien des Bytes ch an der Indexposition i in das Byte-Array ein.
Dieses Array wächst, um das Einfügen zu ermöglichen. Wenn i über das Ende des Arrays hinausgeht, wird das Array zunächst mit Leerzeichen erweitert, um dieses i zu erreichen.
[noexcept]
bool QByteArray::isEmpty() const
Gibt true
zurück, wenn das Byte-Array die Größe 0 hat; andernfalls wird false
zurückgegeben.
Beispiel:
QByteArray().isEmpty(); // returns true QByteArray("").isEmpty(); // returns true QByteArray("abc").isEmpty(); // returns false
Siehe auch size().
bool QByteArray::isLower() const
Gibt true
zurück, wenn dieses Byte-Array Kleinbuchstaben enthält, d. h. wenn es mit seiner toLower()-Faltung identisch ist.
Beachten Sie, dass dies nicht bedeutet, dass das Byte-Array nur Kleinbuchstaben enthält, sondern nur, dass es keine ASCII-Großbuchstaben enthält.
Siehe auch isUpper() und toLower().
[noexcept]
bool QByteArray::isNull() const
Gibt true
zurück, wenn dieses Byte-Array null ist; andernfalls wird false
zurückgegeben.
Beispiel:
QByteArray().isNull(); // returns true QByteArray("").isNull(); // returns false QByteArray("abc").isNull(); // returns false
Qt unterscheidet aus historischen Gründen zwischen null Byte-Arrays und leeren Byte-Arrays. Für die meisten Anwendungen ist es wichtig, ob ein Byte-Array Daten enthält oder nicht, und dies kann mit isEmpty() ermittelt werden.
Siehe auch isEmpty().
bool QByteArray::isUpper() const
Gibt true
zurück, wenn dieses Byte-Array in Großbuchstaben geschrieben ist, d. h. wenn es mit seiner toUpper()-Faltung identisch ist.
Beachten Sie, dass dies nicht bedeutet, dass das Byte-Array nur Großbuchstaben enthält, sondern nur, dass es keine ASCII-Kleinbuchstaben enthält.
Siehe auch isLower() und toUpper().
[noexcept, since 6.3]
bool QByteArray::isValidUtf8() const
Gibt true
zurück, wenn dieses Byte-Array gültige UTF-8 kodierte Daten enthält, oder andernfalls false
.
Diese Funktion wurde in Qt 6.3 eingeführt.
[since 6.0]
qsizetype QByteArray::lastIndexOf(QByteArrayView bv, qsizetype from) const
Gibt die Indexposition des Beginns des letzten Vorkommens der durch bv angezeigten Bytefolge in diesem Byte-Array zurück, wobei ab der Indexposition from rückwärts gesucht wird.
Ist from gleich -1, beginnt die Suche beim letzten Zeichen; ist sie gleich -2, beim vorletzten Zeichen usw.
Gibt -1 zurück, wenn keine Übereinstimmung gefunden wird.
Beispiel:
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
Hinweis: Bei der Suche nach einem bv der Länge 0 wird die Übereinstimmung am Ende der Daten durch ein negatives from von der Suche ausgeschlossen, obwohl -1
normalerweise als Suche vom Ende des Byte-Arrays aus betrachtet wird: Die Übereinstimmung am Ende liegt nach dem letzten Zeichen und wird daher ausgeschlossen. Um eine solche letzte leere Übereinstimmung einzuschließen, geben Sie entweder einen positiven Wert für from an oder lassen Sie den Parameter from ganz weg.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch indexOf(), contains(), und count().
[since 6.2]
qsizetype QByteArray::lastIndexOf(QByteArrayView bv) const
Dies ist eine überladene Funktion.
Gibt die Indexposition des Beginns des letzten Vorkommens der von bv betrachteten Bytefolge in diesem Byte-Array zurück, wobei vom Ende des Byte-Arrays rückwärts gesucht wird. Gibt -1 zurück, wenn keine Übereinstimmung gefunden wird.
Beispiel:
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
Diese Funktion wurde in Qt 6.2 eingeführt.
Siehe auch indexOf(), contains(), und count().
qsizetype QByteArray::lastIndexOf(char ch, qsizetype from = -1) const
Dies ist eine überladene Funktion.
Gibt die Indexposition des Beginns des letzten Vorkommens von Byte ch in diesem Byte-Array zurück, wobei ab Indexposition from rückwärts gesucht wird. Ist from gleich -1 (Standard), beginnt die Suche beim letzten Byte (bei Index size() - 1). Gibt -1 zurück, wenn keine Übereinstimmung gefunden wird.
Beispiel:
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
Siehe auch indexOf() und contains().
QByteArray QByteArray::leftJustified(qsizetype width, char fill = ' ', bool truncate = false) const
Gibt ein Byte-Array der Größe width zurück, das dieses Byte-Array enthält, das mit dem Byte fill aufgefüllt ist.
Wenn truncate falsch ist und size() des Byte-Arrays größer ist als width, dann ist das zurückgegebene Byte-Array eine Kopie dieses Byte-Arrays.
Wenn truncate wahr ist und size() des Byte-Arrays größer ist als width, dann werden alle Bytes in einer Kopie des Byte-Arrays nach der Position width entfernt und die Kopie wird zurückgegeben.
Beispiel:
QByteArray x("apple"); QByteArray y = x.leftJustified(8, '.'); // y == "apple..."
Siehe auch rightJustified().
[noexcept]
qsizetype QByteArray::length() const
Dasselbe wie size().
[static]
QByteArray QByteArray::number(int n, int base = 10)
Gibt ein Byte-Array zurück, das die ganze Zahl n als Text darstellt.
Gibt ein Byte-Array zurück, das eine Zeichenkette enthält, die n repräsentiert, unter Verwendung der angegebenen base (standardmäßig zehn). Die Basen 2 bis 36 werden unterstützt, wobei Buchstaben für Ziffern jenseits von 9 verwendet werden: A ist zehn, B ist elf und so weiter.
Beispiel:
int n = 63; QByteArray::number(n); // returns "63" QByteArray::number(n, 16); // returns "3f" QByteArray::number(n, 16).toUpper(); // returns "3F"
Hinweis: Das Format der Zahl wird nicht lokalisiert; das Standardgebietsschema C wird unabhängig vom Gebietsschema des Benutzers verwendet. Verwenden Sie QLocale, um lokalisierte Konvertierungen zwischen Zahlen und Zeichenketten durchzuführen.
Siehe auch setNum() und toInt().
[static]
QByteArray QByteArray::number(long n, int base = 10)
Dies ist eine überladene Funktion.
Siehe auch toLong().
[static]
QByteArray QByteArray::number(qlonglong n, int base = 10)
Dies ist eine überladene Funktion.
Siehe auch toLongLong().
[static]
QByteArray QByteArray::number(qulonglong n, int base = 10)
Dies ist eine überladene Funktion.
Siehe auch toULongLong().
[static]
QByteArray QByteArray::number(uint n, int base = 10)
Dies ist eine überladene Funktion.
Siehe auch toUInt().
[static]
QByteArray QByteArray::number(ulong n, int base = 10)
Dies ist eine überladene Funktion.
Siehe auch toULong().
[static]
QByteArray QByteArray::number(double n, char format = 'g', int precision = 6)
Dies ist eine überladene Funktion.
Gibt ein Byte-Array zurück, das die Fließkommazahl n als Text darstellt.
Gibt ein Byte-Array zurück, das eine Zeichenkette enthält, die n repräsentiert, mit einer gegebenen format und precision, mit den gleichen Bedeutungen wie für QString::number(double, char, int). Zum Beispiel:
QByteArray ba = QByteArray::number(12.3456, 'E', 3); // ba == 1.235E+01
Siehe auch toDouble() und QLocale::FloatingPointPrecisionOption.
[since 6.4]
QByteArray QByteArray::percentDecoded(char percent = '%') const
Dekodiert URI/URL-ähnliche Prozentkodierung.
Gibt ein Byte-Array zurück, das den dekodierten Text enthält. Der Parameter percent ermöglicht die Verwendung eines anderen Zeichens als "%" (z. B. "_" oder "=") als Escape-Zeichen.
Zum Beispiel:
QByteArray encoded("Qt%20is%20great%33"); QByteArray decoded = encoded.percentDecoded(); // Set to "Qt is great!"
Hinweis: Bei einer ungültigen Eingabe (z. B. eine Zeichenfolge mit der Sequenz "%G5", die keine gültige Hexadezimalzahl ist) ist auch die Ausgabe ungültig. Als Beispiel: die Sequenz "%G5" könnte zu 'W' dekodiert werden.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch toPercentEncoding() und QUrl::fromPercentEncoding().
QByteArray &QByteArray::prepend(QByteArrayView ba)
Stellt die Byte-Array-Ansicht ba diesem Byte-Array voran und gibt einen Verweis auf dieses Byte-Array zurück.
Diese Operation ist typischerweise sehr schnell(konstante Zeit), da QByteArray zusätzlichen Platz am Anfang der Daten vorverteilt, so dass es wachsen kann, ohne jedes Mal das gesamte Array neu zuzuordnen.
Beispiel:
QByteArray x("ship"); QByteArray y("air"); x.prepend(y); // x == "airship"
Dies ist dasselbe wie insert(0, ba).
Siehe auch append() und insert().
QByteArray &QByteArray::prepend(char ch)
Dies ist eine überladene Funktion.
Stellt das Byte ch diesem Byte-Array vor.
QByteArray &QByteArray::prepend(const QByteArray &ba)
Dies ist eine überladene Funktion.
Stellt diesem Byte-Array ba vor.
QByteArray &QByteArray::prepend(const char *str)
Dies ist eine überladene Funktion.
Stellt die '\0'-terminierte Zeichenkette str diesem Byte-Array vor.
QByteArray &QByteArray::prepend(const char *str, qsizetype len)
Dies ist eine überladene Funktion.
Stellt len Bytes ab str diesem Byte-Array vor. Die vorangestellten Bytes können '\0' Bytes enthalten.
QByteArray &QByteArray::prepend(qsizetype count, char ch)
Dies ist eine überladene Funktion.
Stellt count Kopien von Byte ch diesem Byte-Array vor.
void QByteArray::push_back(const QByteArray &other)
Diese Funktion ist aus Gründen der STL-Kompatibilität vorgesehen. Sie ist äquivalent zu append(other).
[since 6.0]
void QByteArray::push_back(QByteArrayView str)
Dies ist eine überladene Funktion.
Dasselbe wie append(str).
Diese Funktion wurde in Qt 6.0 eingeführt.
void QByteArray::push_back(char ch)
Dies ist eine überladene Funktion.
Dasselbe wie append(ch).
void QByteArray::push_back(const char *str)
Dies ist eine überladene Funktion.
Dasselbe wie append(str).
void QByteArray::push_front(const QByteArray &other)
Diese Funktion ist aus Gründen der STL-Kompatibilität vorgesehen. Sie ist äquivalent zu prepend(other).
[since 6.0]
void QByteArray::push_front(QByteArrayView str)
Dies ist eine überladene Funktion.
Dasselbe wie prepend(str).
Diese Funktion wurde in Qt 6.0 eingeführt.
void QByteArray::push_front(char ch)
Dies ist eine überladene Funktion.
Dasselbe wie prepend(ch).
void QByteArray::push_front(const char *str)
Dies ist eine überladene Funktion.
Dasselbe wie prepend(str).
QByteArray::reverse_iterator QByteArray::rbegin()
Gibt einen Reverse-Iterator im STL-Stil zurück, der auf das erste Byte im Byte-Array zeigt, in umgekehrter Reihenfolge.
Warnung: Der zurückgegebene Iterator wird ungültig, wenn er abgetrennt wird oder wenn QByteArray geändert wird.
Siehe auch begin(), crbegin(), und rend().
[noexcept]
QByteArray::const_reverse_iterator QByteArray::rbegin() const
Dies ist eine überladene Funktion.
QByteArray &QByteArray::remove(qsizetype pos, qsizetype len)
Entfernt len Bytes aus dem Array, beginnend an der Indexposition pos, und gibt einen Verweis auf das Array zurück.
Wenn pos außerhalb des Bereichs liegt, passiert nichts. Wenn pos gültig ist, aber pos + len größer als die Größe des Arrays ist, wird das Array an der Position pos abgeschnitten.
Beispiel:
QByteArray ba("Montreal"); ba.remove(1, 4); // ba == "Meal"
Durch das Entfernen von Elementen wird die Kapazität des Arrays erhalten und der zugewiesene Speicherplatz nicht verringert. Um zusätzliche Kapazität abzubauen und so viel Speicher wie möglich freizugeben, rufen Sie squeeze() nach der letzten Änderung der Array-Größe auf.
Siehe auch insert(), replace(), und squeeze().
[since 6.5]
QByteArray &QByteArray::removeAt(qsizetype pos)
Entfernt das Zeichen am Index pos. Wenn pos außerhalb der Grenzen liegt (d.h. pos >= size()), tut diese Funktion nichts.
Diese Funktion wurde in Qt 6.5 eingeführt.
Siehe auch remove().
[since 6.5]
QByteArray &QByteArray::removeFirst()
Entfernt das erste Zeichen in diesem Byte-Array. Wenn das Byte-Array leer ist, tut diese Funktion nichts.
Diese Funktion wurde in Qt 6.5 eingeführt.
Siehe auch remove().
[since 6.1]
template <typename Predicate> QByteArray &QByteArray::removeIf(Predicate pred)
Entfernt alle Bytes, für die das Prädikat pred true zurückgibt, aus dem Byte-Array. Gibt eine Referenz auf das Byte-Array zurück.
Diese Funktion wurde in Qt 6.1 eingeführt.
Siehe auch remove().
[since 6.5]
QByteArray &QByteArray::removeLast()
Entfernt das letzte Zeichen in diesem Byte-Array. Wenn das Byte-Array leer ist, tut diese Funktion nichts.
Diese Funktion wurde in Qt 6.5 eingeführt.
Siehe auch remove().
QByteArray::reverse_iterator QByteArray::rend()
Gibt einen umgekehrten Iterator im STL-Stil zurück, der in umgekehrter Reihenfolge direkt auf das letzte Byte im Byte-Array zeigt.
Warnung: Der zurückgegebene Iterator wird ungültig, wenn er abgetrennt wird oder wenn QByteArray geändert wird.
Siehe auch end(), crend(), und rbegin().
[noexcept]
QByteArray::const_reverse_iterator QByteArray::rend() const
Dies ist eine überladene Funktion.
QByteArray QByteArray::repeated(qsizetype times) const
Gibt eine Kopie dieses Byte-Arrays zurück, die die angegebene Anzahl von times wiederholt.
Wenn times kleiner als 1 ist, wird ein leeres Byte-Array zurückgegeben.
Beispiel:
QByteArray ba("ab"); ba.repeated(4); // returns "abababab"
QByteArray &QByteArray::replace(qsizetype pos, qsizetype len, QByteArrayView after)
Ersetzt die Bytes von len ab der Indexposition pos durch das Byte-Array after und gibt einen Verweis auf dieses Byte-Array zurück.
Beispiel:
QByteArray x("Say yes!"); QByteArray y("no"); x.replace(4, 3, y); // x == "Say no!"
Siehe auch insert() und remove().
[since 6.0]
QByteArray &QByteArray::replace(QByteArrayView before, QByteArrayView after)
Dies ist eine überladene Funktion.
Ersetzt jedes Vorkommen des Byte-Arrays before durch das Byte-Array after.
Beispiel:
QByteArray ba("colour behaviour flavour neighbour"); ba.replace(QByteArray("ou"), QByteArray("o")); // ba == "color behavior flavor neighbor"
Diese Funktion wurde in Qt 6.0 eingeführt.
QByteArray &QByteArray::replace(char before, QByteArrayView after)
Dies ist eine überladene Funktion.
Ersetzt jedes Vorkommen des Bytes before durch das Byte-Array after.
QByteArray &QByteArray::replace(char before, char after)
Dies ist eine überladene Funktion.
Ersetzt jedes Vorkommen des Bytes before durch das Byte after.
QByteArray &QByteArray::replace(const char *before, qsizetype bsize, const char *after, qsizetype asize)
Dies ist eine überladene Funktion.
Ersetzt jedes Vorkommen der bsize -Bytes ab before durch die asize -Bytes ab after. Da die Größen der Zeichenketten durch bsize und asize gegeben sind, können sie '\0' Bytes enthalten und müssen nicht '\0'-terminiert werden.
QByteArray &QByteArray::replace(qsizetype pos, qsizetype len, const char *after, qsizetype alen)
Dies ist eine überladene Funktion.
Ersetzt die Bytes von len ab der Indexposition pos durch die Bytes von alen ab der Position after. Die eingefügten Bytes können '\0'-Bytes enthalten.
void QByteArray::reserve(qsizetype size)
Versucht, Speicher für mindestens size Bytes zuzuweisen.
Wenn Sie im Voraus wissen, wie groß das Byte-Array sein wird, können Sie diese Funktion aufrufen, und wenn Sie resize() oft aufrufen, werden Sie wahrscheinlich eine bessere Leistung erzielen.
Bei Zweifeln darüber, wie viel Platz benötigt wird, ist es in der Regel besser, eine Obergrenze wie size zu verwenden, oder eine hohe Schätzung der wahrscheinlichsten Größe, wenn eine strenge Obergrenze viel größer wäre als diese. Wenn size eine zu niedrige Schätzung ist, wird das Array nach Bedarf wachsen, sobald die reservierte Größe überschritten wird, was zu einer größeren Zuweisung führen kann, als es Ihre beste Überschätzung getan hätte, und die Operation, die sie auslöst, verlangsamen wird.
Warnung: reserve() reserviert Speicher, ändert aber nicht die Größe des Byte-Arrays. Der Zugriff auf Daten jenseits des Endes des Byte-Arrays ist ein undefiniertes Verhalten. Wenn Sie auf Speicher jenseits des aktuellen Endes des Arrays zugreifen müssen, verwenden Sie resize().
Der einzige Zweck dieser Funktion ist es, eine Möglichkeit zur Feinabstimmung der Speichernutzung von QByteArray zu bieten. Im Allgemeinen werden Sie diese Funktion nur selten aufrufen müssen.
Siehe auch squeeze() und capacity().
void QByteArray::resize(qsizetype size)
Setzt die Größe des Byte-Arrays auf size Bytes.
Wenn size größer als die aktuelle Größe ist, wird das Byte-Array auf size Bytes erweitert, wobei die zusätzlichen Bytes am Ende hinzugefügt werden. Die neuen Bytes sind uninitialisiert.
Wenn size kleiner als die aktuelle Größe ist, werden Bytes jenseits der Position size aus dem Byte-Array ausgeschlossen.
Hinweis: Während resize() die Kapazität bei Bedarf vergrößert, wird sie niemals verkleinert. Um überschüssige Kapazität abzubauen, verwenden Sie squeeze().
Siehe auch size(), truncate(), und squeeze().
[since 6.4]
void QByteArray::resize(qsizetype newSize, char c)
Setzt die Größe des Byte-Arrays auf newSize Bytes.
Wenn newSize größer als die aktuelle Größe ist, wird das Byte-Array auf newSize Bytes erweitert und die zusätzlichen Bytes am Ende hinzugefügt. Die neuen Bytes werden auf c initialisiert.
Wenn newSize kleiner als die aktuelle Größe ist, werden Bytes jenseits der Position newSize aus dem Byte-Array ausgeschlossen.
Hinweis: Während resize() die Kapazität bei Bedarf vergrößert, wird sie niemals verkleinert. Um überschüssige Kapazität abzubauen, verwenden Sie squeeze().
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch size(), truncate(), und squeeze().
[since 6.8]
void QByteArray::resizeForOverwrite(qsizetype size)
Ändert die Größe des Byte-Arrays auf size Bytes. Wenn die Größe des Byte-Arrays wächst, werden die neuen Bytes nicht initialisiert.
Das Verhalten ist identisch zu resize(size)
.
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch resize().
QByteArray QByteArray::rightJustified(qsizetype width, char fill = ' ', bool truncate = false) const
Gibt ein Byte-Array der Größe width zurück, das das Byte fill gefolgt von diesem Byte-Array enthält.
Wenn truncate falsch ist und die Größe des Byte-Arrays größer ist als width, dann ist das zurückgegebene Byte-Array eine Kopie dieses Byte-Arrays.
Wenn truncate wahr ist und die Größe des Byte-Arrays größer ist als width, dann wird das resultierende Byte-Array an der Position width abgeschnitten.
Beispiel:
QByteArray x("apple"); QByteArray y = x.rightJustified(8, '.'); // y == "...apple"
Siehe auch leftJustified().
QByteArray &QByteArray::setNum(int n, int base = 10)
Stellt die ganze Zahl n als Text dar.
Setzt dieses Byte-Array auf eine Zeichenkette, die n in der Basis base (standardmäßig zehn) darstellt, und gibt einen Verweis auf dieses Byte-Array zurück. Die Basen 2 bis 36 werden unterstützt, wobei Buchstaben für Ziffern jenseits von 9 verwendet werden; A ist zehn, B ist elf und so weiter.
Beispiel:
QByteArray ba; int n = 63; ba.setNum(n); // ba == "63" ba.setNum(n, 16); // ba == "3f"
Hinweis: Das Format der Zahl wird nicht lokalisiert; unabhängig vom Gebietsschema des Benutzers wird das Standardgebietsschema C verwendet. Verwenden Sie QLocale, um lokalisierte Konvertierungen zwischen Zahlen und Zeichenketten durchzuführen.
Siehe auch number() und toInt().
QByteArray &QByteArray::setNum(long n, int base = 10)
Dies ist eine überladene Funktion.
Siehe auch toLong().
QByteArray &QByteArray::setNum(qlonglong n, int base = 10)
Dies ist eine überladene Funktion.
Siehe auch toLongLong().
QByteArray &QByteArray::setNum(qulonglong n, int base = 10)
Dies ist eine überladene Funktion.
Siehe auch toULongLong().
QByteArray &QByteArray::setNum(short n, int base = 10)
Dies ist eine überladene Funktion.
Siehe auch toShort().
QByteArray &QByteArray::setNum(uint n, int base = 10)
Dies ist eine überladene Funktion.
Siehe auch toUInt().
QByteArray &QByteArray::setNum(ulong n, int base = 10)
Dies ist eine überladene Funktion.
Siehe auch toULong().
QByteArray &QByteArray::setNum(ushort n, int base = 10)
Dies ist eine überladene Funktion.
Siehe auch toUShort().
QByteArray &QByteArray::setNum(double n, char format = 'g', int precision = 6)
Dies ist eine überladene Funktion.
Stellt die Fließkommazahl n als Text dar.
Setzt dieses Byte-Array auf eine Zeichenkette, die n repräsentiert, mit einem gegebenen format und precision (mit denselben Bedeutungen wie für QString::number(double, char, int)), und gibt einen Verweis auf dieses Byte-Array zurück.
Siehe auch toDouble() und QLocale::FloatingPointPrecisionOption.
QByteArray &QByteArray::setNum(float n, char format = 'g', int precision = 6)
Dies ist eine überladene Funktion.
Stellt die Fließkommazahl n als Text dar.
Setzt dieses Byte-Array auf eine Zeichenkette, die n repräsentiert, mit einem gegebenen format und precision (mit denselben Bedeutungen wie für QString::number(double, char, int)), und gibt einen Verweis auf dieses Byte-Array zurück.
Siehe auch toFloat().
QByteArray &QByteArray::setRawData(const char *data, qsizetype size)
Setzt QByteArray zurück, um die ersten size Bytes des Arrays data zu verwenden. Die Bytes werden nicht kopiert. Der QByteArray enthält den Zeiger data. Der Aufrufer garantiert, dass data nicht gelöscht oder verändert wird, solange diese QByteArray und alle Kopien davon existieren, die nicht verändert worden sind.
Diese Funktion kann anstelle von fromRawData() verwendet werden, um vorhandene QByteArray -Objekte wiederzuverwenden und so eine erneute Speicherzuweisung zu vermeiden.
Siehe auch fromRawData(), data(), und constData().
void QByteArray::shrink_to_fit()
Diese Funktion ist aus Gründen der STL-Kompatibilität vorgesehen. Sie ist äquivalent zu squeeze().
QByteArray QByteArray::simplified() const
Gibt eine Kopie dieses Byte-Arrays zurück, bei der die Leerzeichen am Anfang und am Ende entfernt wurden und bei der jede Folge von internen Leerzeichen durch ein einzelnes Leerzeichen ersetzt wurde.
Es handelt sich dabei um diejenigen Zeichen, für die die C++-Standardfunktion isspace()
in der C-Sprachumgebung true
zurückgibt; dies sind die ASCII-Zeichen Tabulator '\t', Zeilenvorschub '\n', Wagenrücklauf '\r', vertikaler Tabulator '\v', Formfeed '\f' und Leerzeichen ' '.
Beispiel:
QByteArray ba(" lots\t of\nwhitespace\r\n "); ba = ba.simplified(); // ba == "lots of whitespace";
Siehe auch trimmed(), QChar::SpecialCharacter, und Spacing Characters.
[noexcept]
qsizetype QByteArray::size() const
Gibt die Anzahl der Bytes in diesem Byte-Array zurück.
Das letzte Byte im Byte-Array befindet sich an der Position size() - 1. Außerdem stellt QByteArray sicher, dass das Byte an der Position size() immer '\0' ist, so dass Sie den Rückgabewert von data() und constData() als Argumente für Funktionen verwenden können, die Strings mit '\0'-Ende erwarten. Wenn das Objekt QByteArray aus einem raw data erstellt wurde, das das abschließende '\0'-Byte nicht enthielt, dann fügt QByteArray es nicht automatisch hinzu, es sei denn, es wird eine Deep Copy erstellt.
Beispiel:
QByteArray ba("Hello"); qsizetype n = ba.size(); // n == 5 ba.data()[0]; // returns 'H' ba.data()[4]; // returns 'o' ba.data()[5]; // returns '\0'
Siehe auch isEmpty() und resize().
[since 6.8]
QByteArray &QByteArray::slice(qsizetype pos, qsizetype n)
Ändert dieses Byte-Array so, dass es an der Position pos beginnt, erweitert um n Bytes und gibt einen Verweis auf dieses Byte-Array zurück.
Hinweis: Das Verhalten ist undefiniert, wenn pos < 0, n < 0, oder pos + n > size().
Beispiel:
QByteArray x = "Five pineapples"_ba; x.slice(5); // x == "pineapples" x.slice(4, 3); // x == "app"
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch sliced(), first(), last(), chopped(), chop(), und truncate().
[since 6.8]
QByteArray &QByteArray::slice(qsizetype pos)
Dies ist eine überladene Funktion.
Ändert dieses Byte-Array so, dass es an der Position pos beginnt und sich bis zu seinem Ende erstreckt, und gibt einen Verweis auf dieses Byte-Array zurück.
Hinweis: Das Verhalten ist undefiniert, wenn pos < 0 oder pos > size().
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch sliced(), first(), last(), chopped(), chop(), und truncate().
QList<QByteArray> QByteArray::split(char sep) const
Teilt das Byte-Array in Unterarrays auf, wo immer sep vorkommt, und gibt die Liste dieser Arrays zurück. Wenn sep nirgendwo im Byte-Array vorkommt, gibt split() eine Einzelelementliste zurück, die dieses Byte-Array enthält.
void QByteArray::squeeze()
Gibt jeglichen Speicher frei, der nicht zum Speichern der Daten des Arrays benötigt wird.
Der einzige Zweck dieser Funktion ist es, eine Möglichkeit zur Feinabstimmung der Speichernutzung von QByteArray zu bieten. Im Allgemeinen werden Sie diese Funktion nur selten aufrufen müssen.
Siehe auch reserve() und capacity().
[since 6.0]
bool QByteArray::startsWith(QByteArrayView bv) const
Gibt true
zurück, wenn dieses Byte-Array mit der durch bv angezeigten Bytefolge beginnt; andernfalls wird false
zurückgegeben.
Beispiel:
QByteArray url("ftp://ftp.qt-project.org/"); if (url.startsWith("ftp:")) ...
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch endsWith() und first().
bool QByteArray::startsWith(char ch) const
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn dieses Byte-Array mit dem Byte ch beginnt; andernfalls gibt sie false
zurück.
[noexcept]
void QByteArray::swap(QByteArray &other)
Tauscht dieses Byte-Array mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.
QByteArray QByteArray::toBase64(QByteArray::Base64Options options = Base64Encoding) const
Gibt eine Kopie des Byte-Arrays zurück, kodiert mit den Optionen 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"
Der Algorithmus zur Kodierung von Base64-kodierten Daten ist in RFC 4648 definiert.
Siehe auch fromBase64().
CFDataRef QByteArray::toCFData() const
Erzeugt ein CFData aus einem QByteArray.
Der Aufrufer ist Eigentümer des CFData-Objekts und dafür verantwortlich, es wieder freizugeben.
Siehe auch toRawCFData(), fromCFData(), fromRawCFData(), und fromRawData().
double QByteArray::toDouble(bool *ok = nullptr) const
Gibt das in einen double
-Wert konvertierte Byte-Array zurück.
Gibt eine Unendlichkeit zurück, wenn die Konvertierung überläuft, oder 0,0, wenn die Konvertierung aus anderen Gründen fehlschlägt (z. B. Unterlauf).
Wenn ok nicht nullptr
ist, wird ein Fehler durch Setzen von *ok auf false
und ein Erfolg durch Setzen von *ok auf true
gemeldet.
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
Warnung: Der Inhalt von QByteArray darf nur gültige numerische Zeichen enthalten, darunter das Plus-/Minuszeichen, das in der wissenschaftlichen Notation verwendete Zeichen e und den Dezimalpunkt. Die Einbeziehung der Einheit oder zusätzlicher Zeichen führt zu einem Konvertierungsfehler.
Hinweis: Die Konvertierung der Zahl erfolgt im Standardgebietsschema C, unabhängig vom Gebietsschema des Benutzers. Verwenden Sie QLocale, um lokalisierte Konvertierungen zwischen Zahlen und Zeichenketten vorzunehmen.
Diese Funktion ignoriert führende und abschließende Leerzeichen.
Siehe auch number().
[since 6.5]
emscripten::val QByteArray::toEcmaUint8Array()
Erzeugt ein Uint8Array aus einem QByteArray.
Diese Funktion überträgt Daten aus dem Heap-Speicher von QByteArray in einen JavaScript-Datenpuffer. Die Funktion alloziert und kopiert in einen ArrayBuffer und gibt eine Uint8Array-Ansicht auf diesen Puffer zurück.
Die JavaScript-Objekte besitzen eine Kopie der Daten, und diese QByteArray kann sicher gelöscht werden, nachdem die Kopie erstellt wurde.
QByteArray byteArray = "test"; emscripten::val uint8array = byteArray.toEcmaUint8Array();
Diese Funktion wurde in Qt 6.5 eingeführt.
Siehe auch toEcmaUint8Array().
float QByteArray::toFloat(bool *ok = nullptr) const
Gibt das in einen float
-Wert konvertierte Byte-Array zurück.
Gibt eine Unendlichkeit zurück, wenn die Konvertierung überläuft, oder 0,0, wenn die Konvertierung aus anderen Gründen fehlschlägt (z. B. Unterlauf).
Wenn ok nicht nullptr
ist, wird ein Fehler durch Setzen von *ok auf false
und ein Erfolg durch Setzen von *ok auf true
gemeldet.
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
Warnung: Der Inhalt von QByteArray darf nur gültige numerische Zeichen enthalten, darunter das Plus-/Minuszeichen, das in der wissenschaftlichen Notation verwendete Zeichen e und den Dezimalpunkt. Die Einbeziehung der Einheit oder zusätzlicher Zeichen führt zu einem Konvertierungsfehler.
Hinweis: Die Konvertierung der Zahl erfolgt im Standardgebietsschema C, unabhängig vom Gebietsschema des Benutzers. Verwenden Sie QLocale, um lokalisierte Konvertierungen zwischen Zahlen und Zeichenketten vorzunehmen.
Diese Funktion ignoriert führende und abschließende Leerzeichen.
Siehe auch number().
QByteArray QByteArray::toHex(char separator = '\0') const
Gibt eine hexadezimal kodierte Kopie des Byte-Arrays zurück.
Die Hex-Kodierung verwendet die Zahlen 0-9 und die Buchstaben a-f.
Wenn separator nicht '\0' ist, wird das Trennzeichen zwischen den Hex-Bytes eingefügt.
Beispiel:
QByteArray macAddress = QByteArray::fromHex("123456abcdef"); macAddress.toHex(':'); // returns "12:34:56:ab:cd:ef" macAddress.toHex(0); // returns "123456abcdef"
Siehe auch fromHex().
int QByteArray::toInt(bool *ok = nullptr, int base = 10) const
Gibt das Byte-Array zurück, das unter Verwendung der Basis base in ein int
konvertiert wurde, was standardmäßig zehn ist. Die Basen 0 und 2 bis 36 werden unterstützt, wobei Buchstaben für Ziffern jenseits von 9 verwendet werden; A ist zehn, B ist elf und so weiter.
Wenn base gleich 0 ist, wird die Basis automatisch nach den folgenden Regeln ermittelt: Wenn das Byte-Array mit "0x" beginnt, wird angenommen, dass es hexadezimal (Basis 16) ist; andernfalls, wenn es mit "0b" beginnt, wird angenommen, dass es binär (Basis 2) ist; andernfalls, wenn es mit "0" beginnt, wird angenommen, dass es oktal (Basis 8) ist; andernfalls wird angenommen, dass es dezimal ist.
Gibt 0 zurück, wenn die Konvertierung fehlschlägt.
Wenn ok nicht nullptr
ist, wird ein Fehler durch Setzen von *ok auf false
und ein Erfolg durch Setzen von *ok auf true
gemeldet.
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
Hinweis: Die Konvertierung der Zahl wird in der Standard-C-Sprachumgebung durchgeführt, unabhängig von der Sprachumgebung des Benutzers. Verwenden Sie QLocale, um lokalisierte Konvertierungen zwischen Zahlen und Zeichenketten durchzuführen.
Hinweis: Unterstützung für das Präfix "0b" wurde in Qt 6.4 hinzugefügt.
Siehe auch number().
long QByteArray::toLong(bool *ok = nullptr, int base = 10) const
Gibt das Byte-Array zurück, das unter Verwendung der Basis base in eine long
int konvertiert wurde, die standardmäßig zehn ist. Die Basen 0 und 2 bis 36 werden unterstützt, wobei Buchstaben für Ziffern jenseits von 9 verwendet werden; A ist zehn, B ist elf und so weiter.
Wenn base gleich 0 ist, wird die Basis automatisch nach den folgenden Regeln ermittelt: Wenn das Byte-Array mit "0x" beginnt, wird angenommen, dass es hexadezimal (Basis 16) ist; andernfalls, wenn es mit "0b" beginnt, wird angenommen, dass es binär (Basis 2) ist; andernfalls, wenn es mit "0" beginnt, wird angenommen, dass es oktal (Basis 8) ist; andernfalls wird angenommen, dass es dezimal ist.
Gibt 0 zurück, wenn die Konvertierung fehlschlägt.
Wenn ok nicht nullptr
ist, wird ein Fehler durch Setzen von *ok auf false
und ein Erfolg durch Setzen von *ok auf true
gemeldet.
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
Hinweis: Die Konvertierung der Zahl wird in der Standard-C-Sprachumgebung durchgeführt, unabhängig von der Sprachumgebung des Benutzers. Verwenden Sie QLocale, um lokalisierte Konvertierungen zwischen Zahlen und Zeichenketten durchzuführen.
Hinweis: Unterstützung für das Präfix "0b" wurde in Qt 6.4 hinzugefügt.
Siehe auch number().
qlonglong QByteArray::toLongLong(bool *ok = nullptr, int base = 10) const
Gibt das Byte-Array zurück, das unter Verwendung der Basis base in long long
konvertiert wurde, die standardmäßig zehn ist. Die Basen 0 und 2 bis 36 werden unterstützt, wobei Buchstaben für Ziffern jenseits von 9 verwendet werden; A ist zehn, B ist elf und so weiter.
Wenn base gleich 0 ist, wird die Basis automatisch nach den folgenden Regeln bestimmt: Wenn das Byte-Array mit "0x" beginnt, wird angenommen, dass es hexadezimal (Basis 16) ist; andernfalls, wenn es mit "0b" beginnt, wird angenommen, dass es binär (Basis 2) ist; andernfalls, wenn es mit "0" beginnt, wird angenommen, dass es oktal (Basis 8) ist; andernfalls wird angenommen, dass es dezimal ist.
Gibt 0 zurück, wenn die Konvertierung fehlschlägt.
Wenn ok nicht nullptr
ist, wird ein Fehler durch Setzen von *ok auf false
und ein Erfolg durch Setzen von *ok auf true
gemeldet.
Hinweis: Die Konvertierung der Zahl wird in der Standard-C-Sprachumgebung durchgeführt, unabhängig von der Sprachumgebung des Benutzers. Verwenden Sie QLocale, um lokalisierte Konvertierungen zwischen Zahlen und Zeichenketten durchzuführen.
Hinweis: Unterstützung für das Präfix "0b" wurde in Qt 6.4 hinzugefügt.
Siehe auch number().
QByteArray QByteArray::toLower() const
Gibt eine Kopie des Byte-Arrays zurück, in dem jeder ASCII-Großbuchstabe in Kleinbuchstaben umgewandelt wurde.
Beispiel:
QByteArray x("Qt by THE QT COMPANY"); QByteArray y = x.toLower(); // y == "qt by the qt company"
Siehe auch isLower(), toUpper(), und Character Case.
NSData *QByteArray::toNSData() const
Erzeugt eine NSData aus einer QByteArray.
Das NSData-Objekt wird automatisch wieder freigegeben.
Siehe auch fromNSData(), fromRawNSData(), fromRawData(), und toRawNSData().
QByteArray QByteArray::toPercentEncoding(const QByteArray &exclude = QByteArray(), const QByteArray &include = QByteArray(), char percent = '%') const
Gibt eine prozentual kodierte Kopie dieses Byte-Arrays im URI/URL-Stil zurück. Mit dem Parameter percent können Sie das Standardzeichen "%" durch ein anderes ersetzen.
Standardmäßig kodiert diese Funktion alle Bytes, die nicht eines der folgenden sind:
ALPHA ("a" bis "z" und "A" bis "Z") / DIGIT (0 bis 9) / "-" / "." / "_" / "~"
Um zu verhindern, dass Bytes kodiert werden, übergeben Sie sie an exclude. Um die Kodierung von Bytes zu erzwingen, übergeben Sie sie an include. Das Zeichen percent wird immer kodiert.
Beispiel:
QByteArray text = "{ein fischiger String?}";QByteArray ba = text.toPercentEncoding("{}", "s");qDebug("%s", ba.constData()); // druckt "{a fi%73hy %73tring%3F}"
Die Hex-Codierung verwendet die Zahlen 0-9 und die Großbuchstaben A-F.
Siehe auch fromPercentEncoding() und QUrl::toPercentEncoding().
CFDataRef QByteArray::toRawCFData() const
Konstruiert ein CFData, das die Bytes von QByteArray verwendet.
Die Bytes von QByteArray werden nicht kopiert.
Der Aufrufer garantiert, dass die QByteArray nicht gelöscht oder verändert wird, solange dieses CFData-Objekt existiert.
Siehe auch toCFData(), fromRawCFData(), fromCFData(), und fromRawData().
NSData *QByteArray::toRawNSData() const
Konstruiert eine NSData, die die Bytes der QByteArray verwendet.
Die Bytes von QByteArray werden nicht kopiert.
Der Aufrufer garantiert, dass die QByteArray nicht gelöscht oder verändert wird, solange dieses NSData-Objekt existiert.
Siehe auch fromRawNSData(), fromNSData(), fromRawData(), und toNSData().
short QByteArray::toShort(bool *ok = nullptr, int base = 10) const
Gibt das Byte-Array zurück, das unter Verwendung der Basis base in short
konvertiert wurde, die standardmäßig zehn ist. Die Basen 0 und 2 bis 36 werden unterstützt, wobei Buchstaben für Ziffern jenseits von 9 verwendet werden; A ist zehn, B ist elf und so weiter.
Wenn base gleich 0 ist, wird die Basis automatisch nach den folgenden Regeln bestimmt: Wenn das Byte-Array mit "0x" beginnt, wird angenommen, dass es hexadezimal (Basis 16) ist; andernfalls, wenn es mit "0b" beginnt, wird angenommen, dass es binär (Basis 2) ist; andernfalls, wenn es mit "0" beginnt, wird angenommen, dass es oktal (Basis 8) ist; andernfalls wird angenommen, dass es dezimal ist.
Gibt 0 zurück, wenn die Konvertierung fehlschlägt.
Wenn ok nicht nullptr
ist, wird ein Fehler durch Setzen von *ok auf false
und ein Erfolg durch Setzen von *ok auf true
gemeldet.
Hinweis: Die Konvertierung der Zahl wird in der Standard-C-Sprachumgebung durchgeführt, unabhängig von der Sprachumgebung des Benutzers. Verwenden Sie QLocale, um lokalisierte Konvertierungen zwischen Zahlen und Zeichenketten durchzuführen.
Hinweis: Unterstützung für das Präfix "0b" wurde in Qt 6.4 hinzugefügt.
Siehe auch number().
std::string QByteArray::toStdString() const
Gibt ein std::string-Objekt mit den in diesem QByteArray enthaltenen Daten zurück.
Dieser Operator ist meist nützlich, um eine QByteArray an eine Funktion zu übergeben, die ein std::string-Objekt akzeptiert.
Siehe auch fromStdString() und QString::toStdString().
uint QByteArray::toUInt(bool *ok = nullptr, int base = 10) const
Gibt das Byte-Array zurück, das unter Verwendung der Basis base in unsigned int
konvertiert wurde, was standardmäßig zehn ist. Die Basen 0 und 2 bis 36 werden unterstützt, wobei Buchstaben für Ziffern jenseits von 9 verwendet werden; A ist zehn, B ist elf und so weiter.
Wenn base gleich 0 ist, wird die Basis automatisch nach den folgenden Regeln ermittelt: Wenn das Byte-Array mit "0x" beginnt, wird angenommen, dass es hexadezimal (Basis 16) ist; andernfalls, wenn es mit "0b" beginnt, wird angenommen, dass es binär (Basis 2) ist; andernfalls, wenn es mit "0" beginnt, wird angenommen, dass es oktal (Basis 8) ist; andernfalls wird angenommen, dass es dezimal ist.
Gibt 0 zurück, wenn die Konvertierung fehlschlägt.
Wenn ok nicht nullptr
ist, wird ein Fehler durch Setzen von *ok auf false
und ein Erfolg durch Setzen von *ok auf true
gemeldet.
Hinweis: Die Konvertierung der Zahl wird in der Standard-C-Sprachumgebung durchgeführt, unabhängig von der Sprachumgebung des Benutzers. Verwenden Sie QLocale, um lokalisierte Konvertierungen zwischen Zahlen und Zeichenketten durchzuführen.
Hinweis: Unterstützung für das Präfix "0b" wurde in Qt 6.4 hinzugefügt.
Siehe auch number().
ulong QByteArray::toULong(bool *ok = nullptr, int base = 10) const
Gibt das Byte-Array zurück, das unter Verwendung der Basis base in ein unsigned long int
konvertiert wurde, was standardmäßig zehn ist. Die Basen 0 und 2 bis 36 werden unterstützt, wobei Buchstaben für Ziffern jenseits von 9 verwendet werden; A ist zehn, B ist elf und so weiter.
Wenn base gleich 0 ist, wird die Basis automatisch nach den folgenden Regeln ermittelt: Wenn das Byte-Array mit "0x" beginnt, wird angenommen, dass es hexadezimal (Basis 16) ist; andernfalls, wenn es mit "0b" beginnt, wird angenommen, dass es binär (Basis 2) ist; andernfalls, wenn es mit "0" beginnt, wird angenommen, dass es oktal (Basis 8) ist; andernfalls wird angenommen, dass es dezimal ist.
Gibt 0 zurück, wenn die Konvertierung fehlschlägt.
Wenn ok nicht nullptr
ist, wird ein Fehler durch Setzen von *ok auf false
und ein Erfolg durch Setzen von *ok auf true
gemeldet.
Hinweis: Die Konvertierung der Zahl wird in der Standard-C-Sprachumgebung durchgeführt, unabhängig von der Sprachumgebung des Benutzers. Verwenden Sie QLocale, um lokalisierte Konvertierungen zwischen Zahlen und Zeichenketten durchzuführen.
Hinweis: Unterstützung für das Präfix "0b" wurde in Qt 6.4 hinzugefügt.
Siehe auch number().
qulonglong QByteArray::toULongLong(bool *ok = nullptr, int base = 10) const
Gibt das Byte-Array zurück, das unter Verwendung der Basis base in ein unsigned long long
konvertiert wurde, was standardmäßig zehn ist. Die Basen 0 und 2 bis 36 werden unterstützt, wobei Buchstaben für Ziffern jenseits von 9 verwendet werden; A ist zehn, B ist elf und so weiter.
Wenn base gleich 0 ist, wird die Basis automatisch nach den folgenden Regeln ermittelt: Wenn das Byte-Array mit "0x" beginnt, wird angenommen, dass es hexadezimal (Basis 16) ist; andernfalls, wenn es mit "0b" beginnt, wird angenommen, dass es binär (Basis 2) ist; andernfalls, wenn es mit "0" beginnt, wird angenommen, dass es oktal (Basis 8) ist; andernfalls wird angenommen, dass es dezimal ist.
Gibt 0 zurück, wenn die Konvertierung fehlschlägt.
Wenn ok nicht nullptr
ist, wird ein Fehler durch Setzen von *ok auf false
und ein Erfolg durch Setzen von *ok auf true
gemeldet.
Hinweis: Die Konvertierung der Zahl wird in der Standard-C-Sprachumgebung durchgeführt, unabhängig von der Sprachumgebung des Benutzers. Verwenden Sie QLocale, um lokalisierte Konvertierungen zwischen Zahlen und Zeichenketten durchzuführen.
Hinweis: Unterstützung für das Präfix "0b" wurde in Qt 6.4 hinzugefügt.
Siehe auch number().
ushort QByteArray::toUShort(bool *ok = nullptr, int base = 10) const
Gibt das Byte-Array zurück, das unter Verwendung der Basis base in ein unsigned short
konvertiert wurde, was standardmäßig zehn ist. Die Basen 0 und 2 bis 36 werden unterstützt, wobei Buchstaben für Ziffern jenseits von 9 verwendet werden; A ist zehn, B ist elf und so weiter.
Wenn base gleich 0 ist, wird die Basis automatisch nach den folgenden Regeln ermittelt: Wenn das Byte-Array mit "0x" beginnt, wird angenommen, dass es hexadezimal (Basis 16) ist; andernfalls, wenn es mit "0b" beginnt, wird angenommen, dass es binär (Basis 2) ist; andernfalls, wenn es mit "0" beginnt, wird angenommen, dass es oktal (Basis 8) ist; andernfalls wird angenommen, dass es dezimal ist.
Gibt 0 zurück, wenn die Konvertierung fehlschlägt.
Wenn ok nicht nullptr
ist, wird ein Fehler durch Setzen von *ok auf false
und ein Erfolg durch Setzen von *ok auf true
gemeldet.
Hinweis: Die Konvertierung der Zahl wird in der Standard-C-Sprachumgebung durchgeführt, unabhängig von der Sprachumgebung des Benutzers. Verwenden Sie QLocale, um lokalisierte Konvertierungen zwischen Zahlen und Zeichenketten durchzuführen.
Hinweis: Unterstützung für das Präfix "0b" wurde in Qt 6.4 hinzugefügt.
Siehe auch number().
QByteArray QByteArray::toUpper() const
Gibt eine Kopie des Byte-Arrays zurück, in dem jeder ASCII-Kleinbuchstabe in Großbuchstaben umgewandelt wurde.
Beispiel:
QByteArray x("Qt by THE QT COMPANY"); QByteArray y = x.toUpper(); // y == "QT BY THE QT COMPANY"
Siehe auch isUpper(), toLower(), und Character Case.
QByteArray QByteArray::trimmed() const
Gibt eine Kopie dieses Byte-Arrays zurück, bei der am Anfang und am Ende Leerzeichen entfernt wurden.
Die Abstandszeichen sind diejenigen, für die die C++-Standardfunktion isspace()
im C-Locale true
zurückgibt; dies sind die ASCII-Zeichen Tabulator '\t', Zeilenvorschub '\n', Wagenrücklauf '\r', vertikaler Tabulator '\v', Formfeed '\f' und Leerzeichen ' '.
Beispiel:
QByteArray ba(" lots\t of\nwhitespace\r\n "); ba = ba.trimmed(); // ba == "lots\t of\nwhitespace";
Im Gegensatz zu simplified() lässt trimmed() die internen Abstände unverändert.
Siehe auch simplified(), QChar::SpecialCharacter, und Spacing Characters.
void QByteArray::truncate(qsizetype pos)
Schneidet das Byte-Array an der Indexposition pos ab.
Wenn pos hinter dem Ende des Arrays liegt, passiert nichts.
Beispiel:
QByteArray ba("Stockholm"); ba.truncate(5); // ba == "Stock"
Siehe auch chop(), resize(), und first().
QByteArray &QByteArray::operator+=(const QByteArray &ba)
Hängt das Byte-Array ba an das Ende dieses Byte-Arrays an und gibt eine Referenz auf dieses Byte-Array zurück.
Beispiel:
QByteArray x("free"); QByteArray y("dom"); x += y; // x == "freedom"
Hinweis: QByteArray ist eine implizit gemeinsam genutzte Klasse. Wenn Sie also an ein leeres Byte-Array anhängen, teilt das Byte-Array nur die Daten, die in ba gehalten werden. In diesem Fall werden keine Daten kopiert, was konstante Zeit benötigt. Wenn eine gemeinsam genutzte Instanz geändert wird, wird sie kopiert (copy-on-write), was lineare Zeit benötigt.
Wenn das Byte-Array, an das angehängt wird, nicht leer ist, wird eine Tiefenkopie der Daten durchgeführt, was lineare Zeit benötigt.
Diese Operation leidet in der Regel nicht unter dem Allokations-Overhead, da QByteArray zusätzlichen Speicherplatz am Ende der Daten zuweist, so dass diese wachsen können, ohne dass sie bei jeder Anfügeoperation neu zugewiesen werden müssen.
Siehe auch append() und prepend().
QByteArray &QByteArray::operator+=(char ch)
Dies ist eine überladene Funktion.
Hängt das Byte ch an das Ende dieses Byte-Arrays an und gibt eine Referenz auf dieses Byte-Array zurück.
QByteArray &QByteArray::operator+=(const char *str)
Dies ist eine überladene Funktion.
Hängt die mit '\0' abgeschlossene Zeichenkette str an das Ende dieses Byte-Arrays an und gibt eine Referenz auf dieses Byte-Array zurück.
[noexcept]
QByteArray &QByteArray::operator=(QByteArray &&other)
Verschieben - weist other dieser QByteArray Instanz zu.
[noexcept]
QByteArray &QByteArray::operator=(const QByteArray &other)
Weist other diesem Byte-Array zu und gibt einen Verweis auf dieses Byte-Array zurück.
QByteArray &QByteArray::operator=(const char *str)
Dies ist eine überladene Funktion.
Weist str diesem Byte-Array zu.
str wird angenommen, dass es auf eine null-terminierte Zeichenkette zeigt, und seine Länge wird dynamisch bestimmt.
char &QByteArray::operator[](qsizetype i)
Gibt das Byte an der Indexposition i als modifizierbare Referenz zurück.
i muss eine gültige Indexposition im Byte-Array sein (d.h. 0 <= i < size()).
Beispiel:
QByteArray ba("Hello, world"); cout << ba[0]; // prints H ba[7] = 'W'; // ba == "Hello, World"
Siehe auch at().
char QByteArray::operator[](qsizetype i) const
Dies ist eine überladene Funktion.
Dasselbe wie at(i).
Verwandte Nicht-Mitglieder
[since 6.1]
template <typename T> qsizetype erase(QByteArray &ba, const T &t)
Entfernt alle Elemente, die gleich t sind, aus dem Byte-Array ba. Gibt die Anzahl der entfernten Elemente zurück, falls vorhanden.
Diese Funktion wurde in Qt 6.1 eingeführt.
Siehe auch erase_if.
[since 6.1]
template <typename Predicate> qsizetype erase_if(QByteArray &ba, Predicate pred)
Entfernt alle Elemente, für die das Prädikat pred den Wert true liefert, aus dem Byte-Array ba. Gibt die Anzahl der entfernten Elemente zurück, falls vorhanden.
Diese Funktion wurde in Qt 6.1 eingeführt.
Siehe auch erase.
quint16 qChecksum(QByteArrayView data, Qt::ChecksumType standard = Qt::ChecksumIso3309)
Gibt die CRC-16-Prüfsumme von data zurück.
Die Prüfsumme ist unabhängig von der Byte-Reihenfolge (Endianness) und wird nach dem in standard veröffentlichten Algorithmus berechnet. Standardmäßig wird der in ISO 3309 (Qt::ChecksumIso3309) veröffentlichte Algorithmus verwendet.
Hinweis: Diese Funktion ist eine 16-Bit-Cache-schonende (16 Einträge in der Tabelle) Implementierung des CRC-16-CCITT-Algorithmus.
QByteArray qCompress(const QByteArray &data, int compressionLevel = -1)
Komprimiert das Byte-Array data und gibt die komprimierten Daten in einem neuen Byte-Array zurück.
Der Parameter compressionLevel gibt an, wie stark komprimiert werden soll. Gültige Werte liegen zwischen 0 und 9, wobei 9 der stärksten Komprimierung entspricht (d. h. kleinere komprimierte Daten), die jedoch mit einem langsameren Algorithmus erkauft wird. Kleinere Werte (8, 7, ..., 1) sorgen für eine sukzessive geringere Komprimierung bei etwas höheren Geschwindigkeiten. Der Wert 0 entspricht überhaupt keiner Komprimierung. Der Standardwert ist -1, der die Standardkompression von zlib angibt.
Siehe auch qUncompress(const QByteArray &data).
QByteArray qCompress(const uchar *data, qsizetype nbytes, int compressionLevel = -1)
Dies ist eine überladene Funktion.
Komprimiert die erste nbytes von data mit der Komprimierungsstufe compressionLevel und gibt die komprimierten Daten in einem neuen Byte-Array zurück.
QByteArray qUncompress(const QByteArray &data)
Dekomprimiert das Byte-Array data und gibt ein neues Byte-Array mit den unkomprimierten Daten zurück.
Gibt ein leeres QByteArray zurück, wenn die Eingabedaten beschädigt waren.
Diese Funktion dekomprimiert Daten, die mit qCompress() komprimiert wurden, von dieser und jeder früheren Qt-Version, zurück bis Qt 3.1, als diese Funktion hinzugefügt wurde.
Hinweis: Wenn Sie diese Funktion verwenden wollen, um externe Daten, die mit zlib komprimiert wurden, zu dekomprimieren, müssen Sie dem Byte-Array, das die Daten enthält, zunächst einen vier Byte langen Header voranstellen. Der Header muss die erwartete Länge (in Bytes) der unkomprimierten Daten enthalten, ausgedrückt als vorzeichenlose Big-Endian-32-Bit-Ganzzahl. Diese Zahl ist allerdings nur ein Anhaltspunkt für die anfängliche Größe des Ausgabepuffers. Wenn die angegebene Größe zu klein ist, um das Ergebnis aufzunehmen, wird die Größe des Ausgabepuffers solange erhöht, bis entweder die Ausgabe passt oder der Speicher des Systems erschöpft ist. Trotz des 32-Bit-Headers kann diese Funktion also auf 64-Bit-Plattformen mehr als 4GiB an Ausgabe erzeugen.
Hinweis: In Qt-Versionen vor Qt 6.5 funktionierten mehr als 2GiB an Daten unzuverlässig; in Qt-Versionen vor Qt 6.0 überhaupt nicht.
Siehe auch qCompress().
QByteArray qUncompress(const uchar *data, qsizetype nbytes)
Dies ist eine überladene Funktion.
Dekomprimiert das erste nbytes von data und gibt ein neues Byte-Array mit den unkomprimierten Daten zurück.
int qstrcmp(const char *str1, const char *str2)
Eine sichere strcmp()
Funktion.
Vergleicht str1 und str2. Gibt einen negativen Wert zurück, wenn str1 kleiner ist als str2, 0, wenn str1 gleich str2 ist oder einen positiven Wert, wenn str1 größer ist als str2.
Wenn beide Strings nullptr
sind, werden sie als gleich angesehen; andernfalls, wenn einer der beiden Strings nullptr
ist, wird er als kleiner als der andere behandelt (selbst wenn der andere ein leerer String ist).
Siehe auch qstrncmp(), qstricmp(), qstrnicmp(), Character Case, und QByteArray::compare().
char *qstrcpy(char *dst, const char *src)
Kopiert alle Zeichen bis einschließlich '\0' von src nach dst und gibt einen Zeiger auf dst zurück. Wenn src nullptr
ist, gibt sie sofort nullptr
zurück.
Diese Funktion geht davon aus, dass dst groß genug ist, um den Inhalt von src aufzunehmen.
Hinweis: Wenn sich dst und src überschneiden, ist das Verhalten undefiniert.
Siehe auch qstrncpy().
char *qstrdup(const char *src)
Gibt eine doppelte Zeichenkette zurück.
Weist Platz für eine Kopie von src zu, kopiert sie und gibt einen Zeiger auf die Kopie zurück. Wenn src nullptr
ist, gibt es sofort nullptr
zurück.
Die Eigentümerschaft wird an den Aufrufer übergeben, so dass die zurückgegebene Zeichenkette mit delete[]
gelöscht werden muss.
int qstricmp(const char *str1, const char *str2)
Eine sichere stricmp()
Funktion.
Vergleicht str1 und str2, wobei Unterschiede im Falle von ASCII-Zeichen ignoriert werden.
Gibt einen negativen Wert zurück, wenn str1 kleiner ist als str2, 0, wenn str1 gleich str2 ist oder einen positiven Wert, wenn str1 größer ist als str2.
Wenn beide Zeichenketten nullptr
sind, werden sie als gleich angesehen; andernfalls, wenn eine der beiden Zeichenketten nullptr
ist, wird sie als kleiner als die andere behandelt (selbst wenn die andere eine leere Zeichenkette ist).
Siehe auch qstrcmp(), qstrncmp(), qstrnicmp(), Character Case, und QByteArray::compare().
size_t qstrlen(const char *str)
Eine sichere strlen()
Funktion.
Gibt die Anzahl der Zeichen zurück, die dem abschließenden '\0' vorausgehen, oder 0, wenn str nullptr
ist.
Siehe auch qstrnlen().
int qstrncmp(const char *str1, const char *str2, size_t len)
Eine sichere strncmp()
Funktion.
Vergleicht höchstens len Bytes von str1 und str2.
Gibt einen negativen Wert zurück, wenn str1 kleiner ist als str2, 0, wenn str1 gleich str2 ist oder einen positiven Wert, wenn str1 größer ist als str2.
Wenn beide Strings nullptr
sind, werden sie als gleich angesehen; andernfalls, wenn einer der beiden Strings nullptr
ist, wird er als kleiner als der andere behandelt (auch wenn der andere ein leerer String ist oder len 0 ist).
Siehe auch qstrcmp(), qstricmp(), qstrnicmp(), Character Case, und QByteArray::compare().
char *qstrncpy(char *dst, const char *src, size_t len)
Eine sichere strncpy()
Funktion.
Kopiert höchstens len Bytes von src (wobei sie bei len oder dem terminierenden '\0' aufhört, je nachdem, was zuerst eintritt) nach dst. Garantiert, dass dst '\0'-terminiert ist, außer wenn dst gleich nullptr
oder len gleich 0 ist. Wenn src gleich nullptr
ist, wird nullptr
zurückgegeben, andernfalls wird dst zurückgegeben.
Diese Funktion geht davon aus, dass dst mindestens len Zeichen lang ist.
Hinweis: Wenn sich dst und src überschneiden, ist das Verhalten undefiniert.
Hinweis: Anders als strncpy() schreibt diese Funktion nicht '\0' in alle len Bytes von dst, sondern hört nach dem abschließenden '\0' auf. In diesem Sinne ist sie ähnlich wie C11s strncpy_s().
Siehe auch qstrcpy().
int qstrnicmp(const char *str1, const char *str2, size_t len)
Eine sichere strnicmp()
Funktion.
Vergleicht höchstens len Bytes von str1 und str2, wobei Unterschiede im Falle von ASCII-Zeichen ignoriert werden.
Gibt einen negativen Wert zurück, wenn str1 kleiner ist als str2, 0, wenn str1 gleich str2 ist oder einen positiven Wert, wenn str1 größer ist als str2.
Wenn beide Zeichenketten nullptr
sind, werden sie als gleich angesehen; andernfalls, wenn eine der beiden Zeichenketten nullptr
ist, wird sie als kleiner als die andere behandelt (auch wenn die andere eine leere Zeichenkette ist oder len 0 ist).
Siehe auch qstrcmp(), qstrncmp(), qstricmp(), Character Case, und QByteArray::compare().
size_t qstrnlen(const char *str, size_t maxlen)
Eine sichere strnlen()
Funktion.
Gibt die Anzahl der Zeichen zurück, die dem abschließenden '\0' vorausgehen, höchstens jedoch maxlen. Wenn str nullptr
ist, wird 0 zurückgegeben.
Siehe auch qstrlen().
[noexcept]
bool operator!=(const QByteArray &lhs, const QByteArray &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn das Byte-Array lhs nicht gleich dem Byte-Array rhs ist; andernfalls gibt sie false
zurück.
Siehe auch QByteArray::compare().
[noexcept]
bool operator!=(const QByteArray &lhs, const char *const &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn das Byte-Array lhs nicht gleich der '\0'-terminierten Zeichenkette rhs ist; andernfalls wird false
zurückgegeben.
Siehe auch QByteArray::compare().
[noexcept]
bool operator!=(const char *const &lhs, const QByteArray &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn die mit '\0' abgeschlossene Zeichenkette lhs nicht gleich dem Byte-Array rhs ist; andernfalls gibt sie false
zurück.
Siehe auch QByteArray::compare().
[noexcept, since 6.4]
QByteArray operator""_ba(const char *str, size_t size)
Literal-Operator, der aus den ersten size Zeichen des Zeichenkettenliteral str ein QByteArray erzeugt.
Die QByteArray wird zur Kompilierzeit erstellt, und die erzeugten Zeichenkettendaten werden im schreibgeschützten Segment der kompilierten Objektdatei gespeichert. Doppelte Literale können sich denselben Nur-Lese-Speicher teilen. Diese Funktionalität ist austauschbar mit QByteArrayLiteral, spart aber Tipparbeit, wenn viele String-Literale im Code vorhanden sind.
Der folgende Code erzeugt ein QByteArray:
using namespace Qt::Literals::StringLiterals; auto str = "hello"_ba;
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch Qt::Literals::StringLiterals.
QByteArray operator+(char a1, const QByteArray &a2)
Dies ist eine überladene Funktion.
Gibt ein Byte-Array zurück, das das Ergebnis der Verkettung von Byte a1 und Byte-Array a2 ist.
QByteArray operator+(const QByteArray &a1, char a2)
Dies ist eine überladene Funktion.
Gibt ein Byte-Array zurück, das das Ergebnis der Verkettung von Byte-Array a1 und Byte a2 ist.
QByteArray operator+(const QByteArray &a1, const QByteArray &a2)
Gibt ein Byte-Array zurück, das das Ergebnis der Verkettung von Byte-Array a1 und Byte-Array a2 ist.
Siehe auch QByteArray::operator+=().
QByteArray operator+(const QByteArray &a1, const char *a2)
Dies ist eine überladene Funktion.
Gibt ein Byte-Array zurück, das das Ergebnis der Verkettung des Byte-Arrays a1 und der mit '\0' abgeschlossenen Zeichenfolge a2 ist.
QByteArray operator+(const char *a1, const QByteArray &a2)
Dies ist eine überladene Funktion.
Gibt ein Byte-Array zurück, das das Ergebnis der Verkettung der '\0'-terminierten Zeichenkette a1 und des Byte-Arrays a2 ist.
[noexcept]
bool operator<(const QByteArray &lhs, const QByteArray &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn das Byte-Array lhs lexikalisch kleiner ist als das Byte-Array rhs; andernfalls gibt sie false
zurück.
Siehe auch QByteArray::compare().
[noexcept]
bool operator<(const QByteArray &lhs, const char *const &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn das Byte-Array lhs lexikalisch kleiner ist als die '\0'-terminierte Zeichenkette rhs; andernfalls gibt sie false
zurück.
Siehe auch QByteArray::compare().
[noexcept]
bool operator<(const char *const &lhs, const QByteArray &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn die '\0'-terminierte Zeichenkette lhs lexikalisch kleiner ist als das Byte-Array rhs; andernfalls wird false
zurückgegeben.
Siehe auch QByteArray::compare().
QDataStream &operator<<(QDataStream &out, const QByteArray &ba)
Schreibt das Byte-Array ba in den Stream out und gibt eine Referenz auf den Stream zurück.
Siehe auch Serialisierung von Qt-Datentypen.
[noexcept]
bool operator<=(const QByteArray &lhs, const QByteArray &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn das Byte-Array lhs lexikalisch kleiner oder gleich dem Byte-Array rhs ist; andernfalls gibt sie false
zurück.
Siehe auch QByteArray::compare().
[noexcept]
bool operator<=(const QByteArray &lhs, const char *const &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn das Byte-Array lhs lexikalisch kleiner oder gleich der '\0'-terminierten Zeichenkette rhs ist; andernfalls wird false
zurückgegeben.
Siehe auch QByteArray::compare().
[noexcept]
bool operator<=(const char *const &lhs, const QByteArray &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn die mit '\0' abgeschlossene Zeichenkette lhs lexikalisch kleiner oder gleich dem Byte-Array rhs ist; andernfalls gibt sie false
zurück.
Siehe auch QByteArray::compare().
[noexcept]
bool operator==(const QByteArray &lhs, const QByteArray &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn das Byte-Array lhs gleich dem Byte-Array rhs ist; andernfalls gibt sie false
zurück.
Siehe auch QByteArray::compare().
[noexcept]
bool operator==(const QByteArray &lhs, const char *const &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn das Byte-Array lhs gleich der '\0'-terminierten Zeichenkette rhs ist; andernfalls wird false
zurückgegeben.
Siehe auch QByteArray::compare().
[noexcept]
bool operator==(const char *const &lhs, const QByteArray &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn die mit '\0' abgeschlossene Zeichenkette lhs gleich dem Byte-Array rhs ist; andernfalls gibt sie false
zurück.
Siehe auch QByteArray::compare().
[noexcept]
bool operator>(const QByteArray &lhs, const QByteArray &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn das Byte-Array lhs lexikalisch größer ist als das Byte-Array rhs; andernfalls gibt sie false
zurück.
Siehe auch QByteArray::compare().
[noexcept]
bool operator>(const QByteArray &lhs, const char *const &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn das Byte-Array lhs lexikalisch größer ist als die '\0'-terminierte Zeichenkette rhs; andernfalls gibt sie false
zurück.
Siehe auch QByteArray::compare().
[noexcept]
bool operator>(const char *const &lhs, const QByteArray &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn die '\0'-terminierte Zeichenkette lhs lexikalisch größer ist als das Byte-Array rhs; andernfalls wird false
zurückgegeben.
Siehe auch QByteArray::compare().
[noexcept]
bool operator>=(const QByteArray &lhs, const QByteArray &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn das Byte-Array lhs lexikalisch größer oder gleich dem Byte-Array rhs ist; andernfalls gibt sie false
zurück.
Siehe auch QByteArray::compare().
[noexcept]
bool operator>=(const QByteArray &lhs, const char *const &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn das Byte-Array lhs lexikalisch größer oder gleich der '\0'-terminierten Zeichenkette rhs ist; andernfalls wird false
zurückgegeben.
Siehe auch QByteArray::compare().
[noexcept]
bool operator>=(const char *const &lhs, const QByteArray &rhs)
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn die '\0'-terminierte Zeichenkette lhs lexikalisch größer oder gleich dem Byte-Array rhs ist; andernfalls wird false
zurückgegeben.
Siehe auch QByteArray::compare().
QDataStream &operator>>(QDataStream &in, QByteArray &ba)
Liest ein Byte-Array in ba aus dem Stream in und gibt eine Referenz auf den Stream zurück.
Siehe auch Serialisierung von Qt-Datentypen.
Makro-Dokumentation
QByteArrayLiteral(ba)
Das Makro erzeugt die Daten für ein QByteArray aus dem Stringliteral ba zur Kompilierzeit. Das Erstellen eines QByteArray ist in diesem Fall kostenlos, und die generierten Byte-Array-Daten werden im schreibgeschützten Segment der kompilierten Objektdatei gespeichert.
Zum Beispiel:
QByteArray ba = QByteArrayLiteral("byte array contents");
Die Verwendung von QByteArrayLiteral anstelle eines einfachen C++-Stringliteral in Anführungszeichen kann die Erstellung von QByteArray -Instanzen aus den zur Kompilierzeit bekannten Daten erheblich beschleunigen.
Siehe auch QStringLiteral.
QT_NO_CAST_FROM_BYTEARRAY
Deaktiviert die automatische Umwandlung von QByteArray in const char * oder const void *.
Siehe auch QT_NO_CAST_TO_ASCII und QT_NO_CAST_FROM_ASCII.
[since 6.8]
QT_NO_QSNPRINTF
Die Definition dieses Makros hebt die Verfügbarkeit der Funktionen qsnprintf() und qvsnprintf() auf. Lesen Sie in der Dokumentation der Funktionen nach, warum Sie sie deaktivieren sollten.
Dieses Makro wurde in Qt 6.8 eingeführt.
Siehe auch qsnprintf() und 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.