Описание класса QByteArrayКласс QByteArray предоставляет массив байт. Далее... #include <QByteArray> От него наследуется: Q3CString. Замечание: Все функции в этом классе реентерабельны. Открытые функции
Статические открытые члены
Связанные нечлены класса
Макросы
Подробное описаниеКласс QByteArray предоставляет массив байт. QByteArray может быть использован для хранения как сырых байт (включая и '\0'), так и традиционных 8-битных нуль-терминированых строк. Использование QByteArray более удобно, чем использование const char *. Здесь всегда гарантировано, что данные завершаются '\0' и используется неявное совместное использование данных (copy-on-write) для экономии памяти и избегания ненужного копирования данных. В дополнение к QByteArray Qt также предоставляет класс QString для хранения строковых данных. В большинстве случаев вам больше подойдет класс QString. Он хранит 16-битные символы в Unicode, что упрощает хранение не-ASCII и нелатинских символов в вашем приложении. Кроме того, QString повсюду используется в Qt API. Два основных случая, где QByteArray подходит - это, когда вам нужно сохранить сырые двоичные данные, и когда критично сохранение памяти (например, в Qt для встраиваемых Linux-систем). Один из способов инициализации QByteArray - просто передать const char * в конструктор. Например, следующий код создает массив из 5 байт, содержащий данные "Hello": QByteArray ba("Hello"); Несмотря на то, что size() равен 5, байтовый массив также содержит в конце дополнительный символ '\0', так что, если используется функция, требующая указатель непосредственно на данные (т.е. вызов data()), то эти данные будут гарантированно заканчиваться '\0'. QByteArray делает полную копию данных const char *, так что вы можете модифицировать их, не получив в дальнейшем побочных эффектов. (Если, из соображения производительности, вы не хотите делать полное копирование данных, используйте QByteArray::fromRawData().) Другой способ – установить размер массива, используя resize() и инициализировать данные побайтно. QByteArray использует индексы начинающиеся с 0, как принято в массивах C++. Для доступа к байту в конкретной позиции индекса, вы можете использовать operator[](). В неконстантных массивах operator[]() возвращает ссылку на байт, которая может быть использована с левой стороны операции присваивания. Например: QByteArray ba; ba.resize(5); ba[0] = 0x3c; ba[1] = 0xb8; ba[2] = 0x64; ba[3] = 0x18; ba[4] = 0xca; Для доступа "только для чтения" существует альтернативный синтаксис at(): for (int i = 0; i < ba.size(); ++i) { if (ba.at(i) >= 'a' && ba.at(i) <= 'f') cout << "Found character in range [a-f]" << endl; } at() может работать быстрее, чем operator[](), потому что при этом никогда не создается полной копии. Чтобы получить несколько байт за раз используйте left(), right() или mid(). QByteArray может вмещать байты '\0'. Функция size() всегда возвращает размер всего массива, включая вставленные '\0'. Если вы хотите получить длину данных вплоть до первого символа '\0', но не включая его, вызовите для массива qstrlen(). После вызова resize(), добавленные байты будут содержать неопределенные значения. Чтобы проинициализировать все байты определенным значением, вызовите fill(). Чтобы получить указатель непосредственно на символьные данные, вызовите data() или constData(). Эти функции возвращают указатель на начало данных. Указатель гарантировано остаётся правильным до тех пор, пока не будет вызвана неконстантная функция на QByteArray. Также гарантируется, что данные заканчиваются байтом '\0', если QByteArray не создавался из сырых данных. Этот байт '\0' автоматически предоставляется классом QByteArray и не учитывается в size(). QByteArray предоставляет следующие основные функции для модификации байт данных: append(), prepend(), insert(), replace() и remove(). Например: QByteArray x("and"); x.prepend("rock "); // x == "rock and" x.append(" roll"); // x == "rock and roll" x.replace(5, 3, "&"); // x == "rock & roll" В функциях replace() и remove() первые два аргумента указывают на позицию, от которой начинается удаление, и количество байт, которое должно быть удалено. Когда вы добавляете данные с помощью append() в непустой массив, он может быть перераспределен в памяти перед копированием в него новых данных. Вы можете избежать такого поведения, вызвав функцию reserve(), которая выделит точное количество памяти. Вы также можете вызвать capacity(), чтобы узнать, сколько памяти занимает QByteArray в действительности. Данные, добавляемые в пустой массив, не копируются. Часто надо удалить из массива незначащие пробелы и пробельные символы (whitespace), такие как '\n', '\t', ' ' и т.п. Если вы хотите удалить пробельные символы с обоих концов QByteArray, используйте trimmed(). Если вы хотите удалить пробельные символы с обоих концов массива и заменить последовательности из нескольких таких символов одним пробелом внутри байтового массива, используйте simplified(). Если вы хотите найти все вхождения символа или подстроки в QByteArray, используйте indexOf() или lastIndexOf(). Первая функция осуществляет поиск вперед от указанной позиции, а последняя - осуществляет поиск назад. Обе функции возвращают индекс позиции символа или подстроки, если они были найдены, в противном случае возвращается -1. Например, здесь приведен типичный цикл, который находит все совпадения конкретной подстроки: QByteArray ba("We must be <b>bold</b>, very <b>bold</b>"); int j = 0; while ((j = ba.indexOf("<b>", j)) != -1) { cout << "Found <b> tag at index position " << j << endl; ++j; } Если вы просто хотите только проверить, содержит ли QByteArray конкретный символ или подстроку, используйте contains(). Если вам нужно узнать, сколько раз символ или подстрока встречаются в массиве, используйте count(). Если вы хотите поменять одно значение на другое во всем массиве, используйте одну из двух перегруженных функций replace() с двумя параметрами. Два QByteArray можно сравнить, используя такие перегруженные операторы, как operator<(), operator<=(), operator==(), operator>=() и т.д. Сравнение базируется исключительно на числовых значениях символов массива и проводится очень быстро, но не всегда соответствует желаниям человека. Функция QString::localeAwareCompare() лучше подходит для сортировки строк пользовательского интерфейса. Исторически сложилось, что в QByteArray существует различие между неинициализированным (null byte) массивом и пустым (empty) массивом. Неинициализированный массив - это массив, который создан с помощью конструктора QByteArray() по умолчанию или конструктором с аргументом (const char *)0. Пустой массив это массив, имеющий длину 0. Неинициализированный массив всегда пустой, но пустой массив необязательно будет неинициализированным: QByteArray().isNull(); // возвращает true QByteArray().isEmpty(); // возвращает true QByteArray("").isNull(); // возвращает false QByteArray("").isEmpty(); // возвращает true QByteArray("abc").isNull(); // возвращает false QByteArray("abc").isEmpty(); // возвращает false Все функции, за исключением isNull(), рассматривают неинициализированный (null) массив, как пустой (empty). Например, data() вернет указатель на '\0' для неинициализированного (null) массива (не указатель null), а QByteArray(), при сравнении, равен QByteArray(""). Мы рекомендуем вам всегда использовать isEmpty() и избегать isNull(). Замечания о локалиПреобразования число-строкаФункции, которые выполняют преобразования между числовыми типами данных и строками, выполняются в локали C, независимо от настроек локали пользователя. Используйте QString, чтобы выполнять преобразование с учётом локали между числами и строками. Сравнение 8-битных символовВ QByteArray понятие о верхнем и нижнем регистре символов, и который из символов "больше чем" или "меньше чем" другой - являются зависимыми от локали. Это касается функций, которые поддерживают чувствительность к регистру или сравнивают свои аргументы в верхнем или нижнем регистрах. Чувствительные к регистру операции и сравнения будут точны, если обе строки содержат только символы ASCII. (Если установлен $LC_CTYPE, большинство Unix систем делают все правильно.) Это касается следующих функций contains(), indexOf(), lastIndexOf(), operator<(), operator<=(), operator>(), operator>=(), toLower() и toUpper(). Этот вопрос не касается строк QString, так как они представляют символы используя Unicode. Смотрите также QString и QBitArray. Описание функций-членовQByteArray::QByteArray ()Создает неинициализированный байтовый массив. Смотрите также isEmpty(). QByteArray::QByteArray ( const char * str )Создает байтовый массив, проинициализированный строкой str. QByteArray делает полную копию строки. QByteArray::QByteArray ( const char * data, int size )Создает байтовый массив, содержащий первые size байт из массива data. Если data равен 0, создастся неинициализированный массив. QByteArray делает полную копию строки. Смотрите также fromRawData(). QByteArray::QByteArray ( int size, char ch )Создается байтовый массив длиной size, каждый байт которого проинициализирован символом ch. Смотрите также fill(). QByteArray::QByteArray ( const QByteArray & other )Создаёт копию other. Эта операция требует фиксированного времени (constant time), потому что QByteArray использует неявное разделение данных. Это делает возвращение QByteArray, как результата функции, очень быстрым. Если экземпляр с разделением данных изменяется, то он будет скопирован (copy-on-write), требуя линейного времени. Смотрите также operator=(). QByteArray::~QByteArray ()Уничтожает байтовый массив. QByteArray & QByteArray::append ( const QByteArray & ba )Добавляет массив ba в конец этого массива. Пример: QByteArray x("free"); QByteArray y("dom"); x.append(y); // x == "freedom" То же самое, что и insert(size(), ba). Замечание: QByteArray это класс с неявным совместным использованием данных. Следовательно, если this является пустым QByteArray, то this просто будет совместно использовать данные хранящиеся в ba. В этом случае, данные не копируются, требуя постоянного времени. Если экземпляр с разделением данных изменяется, то он будет скопирован (copy-on-write), требуя линейного времени. Если this - не пустой QByteArray, то создаётся глубокая копия (deep copy) данных, требуя линейного времени. Обычно эта операция не страдает от распределения накладных расходов, поскольку QByteArray предварительно распределяет дополнительное пространство в конце данных, так что оно может увеличиться без перераспределения при каждой операции добавления. Смотрите также operator+=(), prepend() и insert(). QByteArray & QByteArray::append ( const QString & str )Это перегруженная функция. Добавляет строку str в конец этого байтового массива. Данные в кодировке Unicode конвертируются в 8-битные символы с помощью QString::toAscii(). Если QString содержит не-ASCII Unicode символы, использование этой функции может привести к потере информации. Вы можете запретить эту функцию объявив макрос QT_NO_CAST_TO_ASCII, перед компиляцией приложения. Теперь вы должны будете вызвать QString::toAscii() (или QString::toLatin1(), или QString::toUtf8(), или QString::toLocal8Bit()), если вам нужно конвертировать данные в const char *. QByteArray & QByteArray::append ( const char * str )Это перегруженная функция. Добавляет строку str в конец этого байтового массива. QByteArray & QByteArray::append ( const char * str, int len )Эта функция перегружает функцию append(). Добавляет первые len символов строки str в данный байтовый массив и возвращает ссылку на этот байтовый массив. Если len отрицательна,то длина строки будет определена автоматически используя qstrlen(). Если len равна нулю или str равна null, то к байтовому массиву ничего добавляться не будет. Убедитесь, что len короче, чем str. QByteArray & QByteArray::append ( char ch )Это перегруженная функция. Добавляет символ chв конец этого массива. char QByteArray::at ( int i ) constВозвращает символ из массива, находящегося в позиции с индексом i. i должен быть действительным индексом в массиве (т.е. 0 <= i < size()). Смотрите также operator[](). int QByteArray::capacity () constВозвращает максимальное число байт, которое может быть сохранено в массиве без дополнительного перераспределения памяти. Единственная цель этой функции обеспечить оптимальное использование памяти в QByteArray. Вообще, у вас крайне редко возникнет необходимость вызывать эту функцию. Если вы хотите узнать количество байт в массиве, используйте size(). Смотрите также reserve() и squeeze(). void QByteArray::chop ( int n )Удаляет n байт в конце массива. Если n больше чем size(), то вы получите пустой массив. Пример: QByteArray ba("STARTTLS\r\n"); ba.chop(2); // ba == "STARTTLS" Смотрите также truncate(), resize() и left(). void QByteArray::clear ()Очищает содержимое байтового массива и делает его пустым. Смотрите также resize() и isEmpty(). const char * QByteArray::constData () constВозвращает указатель на данные, хранящиеся массиве. Указатель можно использовать для доступа к байтам, которые составляют массив. Данные завершаются символом '\0', если объект QByteArray не был создан из сырых данных. Указатель остается действительным до тех пор, пока байтовый массив не будет перераспределен в памяти или разрушен. Эта функция наиболее полезна для передачи байтового массива в функцию, которая принимает аргумент const char *. Замечание: QByteArray может хранить любые значения байт, включая '\0', но большинство функций, которые принимают в качестве аргумента char * предполагают, что данные завершаются первым встретившимся '\0'. Смотрите также data(), operator[]() и fromRawData(). bool QByteArray::contains ( const QByteArray & ba ) constВозвращает true, если массив содержит в себе массив ba; в противном случае возвращает false. Смотрите также indexOf() и count(). bool QByteArray::contains ( const char * str ) constЭто перегруженная функция. Возвращает true, если в массиве содержится строка str; в противном случае возвращает false. bool QByteArray::contains ( char ch ) constЭто перегруженная функция. Возвращает true, если массив содержит символ ch; в противном случае возвращает false. int QByteArray::count ( const QByteArray & ba ) constВозвращает количество (возможно перекрывающихся) вхождений массива ba в этот массив. Смотрите также contains() и indexOf(). int QByteArray::count ( const char * str ) constЭто перегруженная функция. Возвращает количество (возможно перекрывающихся) вхождений строки str в массив. int QByteArray::count ( char ch ) constЭто перегруженная функция. Возвращает количество вхождений символа ch в исходном массиве. Смотрите также contains() и indexOf(). int QByteArray::count () constЭто перегруженная функция. То же, что и size(). char * QByteArray::data ()Возвращает указатель на данные, хранящиеся массиве. Указатель можно использовать для доступа и изменения данных, которые составляют массив. Данные завершаются символом '\0', т.е. количество байт в возвращаемой символьной строке равна size() + 1 для признака конца строки - '\0'. Пример: QByteArray ba("Hello world"); char *data = ba.data(); while (*data) { cout << "[" << *data << "]" << endl; ++data; } Указатель остается действительным до тех пор, пока байтовый массив не будет перераспределен в памяти или разрушен. Если нужен доступ только для чтения, то функция constData() работает быстрее, потому что в этом случае не требуется создавать полную копию данных. Эта функция наиболее полезна для передачи байтового массива в функцию, которая принимает аргумент const char *. Следующий пример создаёт копию char*, возвращаемого из data(), но он повреждена куча и вызовет аварийное завершение, поскольку он не выделяет байт для символа '\0' в конце: QString tmp = "test"; QByteArray text = tmp.toLocal8Bit(); char *data = new char[text.size()] strcpy(data, text.data()); delete [] data; Тем самым выделяем правильный объём памяти: QString tmp = "test"; QByteArray text = tmp.toLocal8Bit(); char *data = new char[text.size() + 1] strcpy(data, text.data()); delete [] data; Замечание: QByteArray может хранить любые значения байт, включая '\0', но большинство функций, которые принимают в качестве аргумента char * предполагают, что данные завершаются первым встретившимся '\0'. Смотрите также constData() и operator[](). const char * QByteArray::data () constЭто перегруженная функция. bool QByteArray::endsWith ( const QByteArray & ba ) constВозвращает true, если этот массив оканчивается массивом ba; в противном случае возвращает false. Пример: QByteArray url("http://qt.nokia.com/index.html"); if (url.endsWith(".html")) ... Смотрите также startsWith() и right(). bool QByteArray::endsWith ( const char * str ) constЭто перегруженная функция. Возвращает true, если массив оканчивается строкой str; в противном случае возвращает false. bool QByteArray::endsWith ( char ch ) constЭто перегруженная функция. Возвращает true, если массив оканчивается символом ch; в противном случае возвращает false. QByteArray & QByteArray::fill ( char ch, int size = -1 )Присваивает каждому байту массива значение ch. Если size отличен от -1 (значения по умолчанию), то длина массива предварительно изменяется на size. Пример: QByteArray ba("Istambul"); ba.fill('o'); // ba == "oooooooo" ba.fill('X', 2); // ba == "XX" Смотрите также resize(). QByteArray QByteArray::fromBase64 ( const QByteArray & base64 ) [static]Возвращает копию массива base64, декодированного из кодировки Base64. Входной массив не проверяется на корректность; неверные символы исходного массива пропускаются, процесс декодирования продолжается со следующего символа. Например: QByteArray text = QByteArray::fromBase64("UXQgaXMgZ3JlYXQh"); text.data(); // возвращает "Qt is great!" Алгоритм, использующийся при декодировании из кодировки Base64, определен вRFC 2045. Смотрите также toBase64(). QByteArray QByteArray::fromHex ( const QByteArray & hexEncoded ) [static]Возвращает копию массива hexEncoded, декодированного из шестнадцатеричной кодировки. Входной массив не проверяется на корректность; неверные символы исходного массива пропускаются, процесс декодирования продолжается со следующего символа. Например: QByteArray text = QByteArray::fromHex("517420697320677265617421"); text.data(); // возвращает "Qt is great!" Смотрите также toHex(). QByteArray QByteArray::fromPercentEncoding ( const QByteArray & input, char percent = '%' ) [static]Возвращает копию массива input, декодированную из процентного представления в URI/URL-стиле. Параметр percent позволяет вам заменить символ '%' на другой (например, '_' или '='). Например: QByteArray text = QByteArray::fromPercentEncoding("Qt%20is%20great%33"); text.data(); // возвращает "Qt is great!" Эта функция была введена в Qt 4.4. Смотрите также toPercentEncoding() и QUrl::fromPercentEncoding(). QByteArray QByteArray::fromRawData ( const char * data, int size ) [static]Конструирует QByteArray, который использует первые size байт массива data. Байты не копируются. QByteArray будет содержать указатель data. Вызывающий должен гарантировать, что data не будет удалён или изменён до тех пор, пока существует этот QByteArray и любые его копии, которые не были изменены. Другими словами, так как QByteArray - это класс с неявным совместным использованием данных и экземпляр возвращаемый этой функцией содержит указатель data, вызывающая функция не должна удалять data или изменять его непосредственно до тех пор, пока существует возвращённый QByteArray и любые его копии. Однако, QByteArray не становится владельцем data, так что деструктор QByteArray никогда не удалит сами данные data, даже, когда последний QByteArray, ссылающийся на data, будет уничтожен. Последующая попытка изменить содержимое возвращённого QByteArray, или любой его копии, приведёт к созданию глубокой копии массива data перед внесением изменений. Это гарантирует, что сам массив data ни когда не будет изменён с помощью QByteArray. Этот пример показывает, как читать данные используя QDataStream для сырых данных в памяти без копирования самих данных в QByteArray: static const char mydata[] = { 0x00, 0x00, 0x03, 0x84, 0x78, 0x9c, 0x3b, 0x76, 0xec, 0x18, 0xc3, 0x31, 0x0a, 0xf1, 0xcc, 0x99, ... 0x6d, 0x5b }; QByteArray data = QByteArray::fromRawData(mydata, sizeof(mydata)); QDataStream in(&data, QIODevice::ReadOnly); ... Предупреждение: Байтовый массив, созданный с помощью fromRawData() не оканчивается нулем, кроме случаев, когда исходный массив данных содержит '\0' в позиции size. В то время как это не имеет значения для QDataStream или функций подобных indexOf(), передача массива байт в функцию принимающую const char * и ожидающую строку с завершающим символом '\0' потерпит неудачу. Смотрите также setRawData(), data() и constData(). int QByteArray::indexOf ( const QByteArray & ba, int from = 0 ) constВозвращает индекс позиции первого вхождения массива ba в этот массив, поиск осуществляется вперед начиная с позиции с индексом from. Возвращает -1, если ba не может быть найден. Пример: QByteArray x("sticky question"); QByteArray y("sti"); x.indexOf(y); // возвращает 0 x.indexOf(y, 1); // возвращает 10 x.indexOf(y, 10); // возвращает 10 x.indexOf(y, 11); // возвращает -1 Смотрите также lastIndexOf(), contains() и count(). int QByteArray::indexOf ( const QString & str, int from = 0 ) constЭто перегруженная функция. Возвращает индекс позиции первого вхождения строки str в массив, поиск осуществляется вперед начиная с позиции с индексом from. Возвращает -1, если str не может быть найдена. Данные в Unicode конвертируются в 8-битные символы с использованием QString::toAscii(). Если QString содержит не-ASCII Unicode символы, использование этой функции может привести к потере информации. Вы можете запретить эту функцию объявив макрос QT_NO_CAST_TO_ASCII, перед компиляцией приложения. Теперь вы должны будете вызвать QString::toAscii() (или QString::toLatin1(), или QString::toUtf8(), или QString::toLocal8Bit()), если вам нужно конвертировать данные в const char *. int QByteArray::indexOf ( const char * str, int from = 0 ) constЭто перегруженная функция. Возвращает индекс позиции первого вхождения строки str в массив, поиск осуществляется вперед начиная с позиции с индексом from. Возвращает -1, если str не может быть найдена. int QByteArray::indexOf ( char ch, int from = 0 ) constЭто перегруженная функция. Возвращает индекс позиции первого вхождения символа ch в массиве, поиск осуществляется вперед начиная с позиции с индексом from. Возвращает -1, если ch не может быть найден. Пример: QByteArray ba("ABCBA"); ba.indexOf("B"); // возвращает 1 ba.indexOf("B", 1); // возвращает 1 ba.indexOf("B", 2); // возвращает 3 ba.indexOf("X"); // возвращает -1 Смотрите также lastIndexOf() и contains(). QByteArray & QByteArray::insert ( int i, const QByteArray & ba )Вставляет массив ba в позицию с индексом i и возвращает ссылку на этот массив. Пример: QByteArray ba("Meal"); ba.insert(1, QByteArray("ontr")); // ba == "Montreal" Смотрите также append(), prepend(), replace() и remove(). QByteArray & QByteArray::insert ( int i, const QString & str )Это перегруженная функция. Вставляет в массив строку str в позицию с индексом i. Данные в Unicode конвертируются в 8-битные символы используя функцию QString::toAscii(). Если i больше чем size(), массив сначала будет расширен с помощью resize(). Если QString содержит не-ASCII Unicode символы, использование этой функции может привести к потере информации. Вы можете запретить эту функцию объявив макрос QT_NO_CAST_TO_ASCII, перед компиляцией приложения. Теперь вы должны будете вызвать QString::toAscii() (или QString::toLatin1(), или QString::toUtf8(), или QString::toLocal8Bit()), если вам нужно конвертировать данные в const char *. QByteArray & QByteArray::insert ( int i, const char * str )Это перегруженная функция. Вставляет в массив строку str в позицию с индексом i. Если i больше чем size(), массив сначала будет расширен с помощью resize(). QByteArray & QByteArray::insert ( int i, const char * str, int len )Это перегруженная функция. Вставляет len байтов строки str в позицию i байтового массива. Если i больше чем size(), массив сначала будет расширен с помощью resize(). Эта функция была введена в Qt 4.6. QByteArray & QByteArray::insert ( int i, char ch )Это перегруженная функция. Вставляет символ ch в позицию i в массиве. Если i больше чем size(), массив сначала будет расширен с помощью функции resize(). bool QByteArray::isEmpty () constВозвращает true, если массив имеет размер 0; в противном случае возвращает false. Пример: QByteArray().isEmpty(); // возвращает true QByteArray("").isEmpty(); // возвращает true QByteArray("abc").isEmpty(); // возвращает false Смотрите также size(). bool QByteArray::isNull () constВозвращает true, если массив не инициализирован; в противном случае возвращает false. Пример: QByteArray().isNull(); // возвращает true QByteArray("").isNull(); // возвращает false QByteArray("abc").isNull(); // возвращает false Qt делает различия между неинициализированным и пустым массивом по историческим причинам. Для большинства приложений имеет значение, содержит байтовый массив данные или нет, и это можно определить с помощью isEmpty(). Смотрите также isEmpty(). int QByteArray::lastIndexOf ( const QByteArray & ba, int from = -1 ) constВозвращает индекс позиции последнего вхождения массива ba в этот массив, поиск осуществляется назад начиная с позиции с индексом from. Если from равен -1 (по умолчанию), поиск начинается с последнего байта. Возвращает -1, если ba не может быть найден. Пример: QByteArray x("crazy azimuths"); QByteArray y("az"); x.lastIndexOf(y); // возвращает 6 x.lastIndexOf(y, 6); // возвращает 6 x.lastIndexOf(y, 5); // возвращает 2 x.lastIndexOf(y, 1); // возвращает -1 Смотрите также indexOf(), contains() и count(). int QByteArray::lastIndexOf ( const QString & str, int from = -1 ) constЭто перегруженная функция. Возвращает индекс позиции последнего вхождения строки str в массив, поиск осуществляется назад начиная с позиции с индексом from. Если from равен -1 (по умолчанию), поиск начинается с последнего (size() - 1) байта. Возвращает -1, если str не может быть найдена. Данные в Unicode конвертируются в 8-битные символы с использованием QString::toAscii(). Если QString содержит не-ASCII Unicode символы, использование этой функции может привести к потере информации. Вы можете запретить эту функцию объявив макрос QT_NO_CAST_TO_ASCII, перед компиляцией приложения. Теперь вы должны будете вызвать QString::toAscii() (или QString::toLatin1(), или QString::toUtf8(), или QString::toLocal8Bit()), если вам нужно конвертировать данные в const char *. int QByteArray::lastIndexOf ( const char * str, int from = -1 ) constЭто перегруженная функция. Возвращает индекс позиции последнего вхождения строки str в массив, поиск осуществляется назад начиная с позиции с индексом from. Если from равен -1 (по умолчанию), поиск начинается с последнего (size() - 1) байта. Возвращает -1, если str не может быть найдена. int QByteArray::lastIndexOf ( char ch, int from = -1 ) constЭто перегруженная функция. Возвращает индекс позиции последнего вхождения символа ch в массив, поиск осуществляется назад начиная с позиции с индексом from. Если from равен -1 (по умолчанию), поиск начинается с последнего (size() - 1) байта. Возвращает -1, если ch не может быть найден. Пример: QByteArray ba("ABCBA"); ba.lastIndexOf("B"); // возвращает 3 ba.lastIndexOf("B", 3); // возвращает 3 ba.lastIndexOf("B", 2); // возвращает 1 ba.lastIndexOf("X"); // возвращает -1 Смотрите также indexOf() и contains(). QByteArray QByteArray::left ( int len ) constВозвращает массив, содержащий len крайних слева байт из исходного массива. Массив будет возвращен полностью, если len больше, чем size(). Пример: QByteArray x("Pineapple"); QByteArray y = x.left(4); // y == "Pine" Смотрите также right(), mid(), startsWith() и truncate(). QByteArray QByteArray::leftJustified ( int width, char fill = ' ', bool truncate = false ) constВозвращает массив размером width, который содержит исходный массив, дополненный символом fill. Если truncate равно false и size() массива больше, чем width, то возвращается копия этого массива. Если truncate равно true и size() массива больше, чем width, то возвращается копия массива, у которой байты после позиции width отсечены. Пример: QByteArray x("apple"); QByteArray y = x.leftJustified(8, '.'); // y == "apple..." Смотрите также rightJustified(). int QByteArray::length () constТо же, что и size(). QByteArray QByteArray::mid ( int pos, int len = -1 ) constВозвращает массив, содержащий len байт из этого массива, начиная с позиции pos. Если len равно -1 (по умолчанию) или pos + len >= size(), то возвращается массив, содержащий все байты, начиная с позиции pos и до конца массива. Пример: QByteArray x("Five pineapples"); QByteArray y = x.mid(5, 4); // y == "pine" QByteArray z = x.mid(5); // z == "pineapples" Смотрите также left() и right(). QByteArray QByteArray::number ( int n, int base = 10 ) [static]Возвращает массив, содержащий строку, эквивалентную числу n в системе исчисления по базе base (10 по умолчанию). Параметр base может быть любым значением от 2 до 36. Пример: int n = 63; QByteArray::number(n); // возвращает "63" QByteArray::number(n, 16); // возвращает "3f" QByteArray::number(n, 16).toUpper(); // возвращает "3F" Замечание: Формат числа не локализован; по умолчанию используется локаль Cи независимо от пользовательской локали. Смотрите также setNum() и toInt(). QByteArray QByteArray::number ( uint n, int base = 10 ) [static]Это перегруженная функция. Смотрите также toUInt(). QByteArray QByteArray::number ( qlonglong n, int base = 10 ) [static]Это перегруженная функция. Смотрите также toLongLong(). QByteArray QByteArray::number ( qulonglong n, int base = 10 ) [static]Это перегруженная функция. Смотрите также toULongLong(). QByteArray QByteArray::number ( double n, char f = 'g', int prec = 6 ) [static]Это перегруженная функция. Возвращает массив, который содержит печатаемое значение n, представленное в формате f с точностью prec. Аргумент n форматируется в соответствии с форматом f, определенному по умолчанию как g, и может быть одним из следующих:
Для 'e', 'E' и 'f' параметр prec указывает количество цифр после точки. Для 'g' и 'G' параметр prec указывает максимальное количество значащих цифр (замыкающие нули опускаются). QByteArray ba = QByteArray::number(12.3456, 'E', 3); // ba == 1.235E+01 Замечание: Формат числа не локализован; по умолчанию используется локаль Cи независимо от пользовательской локали. Смотрите также toDouble(). QByteArray & QByteArray::prepend ( const QByteArray & ba )Добавляет массив ba перед этим массивом и возвращает ссылку на этот массив. Пример: QByteArray x("ship"); QByteArray y("air"); x.prepend(y); // x == "airship" Это то же самое, что и insert(0, ba). Замечание: QByteArray это класс с неявным совместным использованием данных. Следовательно, если this является пустым QByteArray, то this просто будет совместно использовать данные хранящиеся в ba. В этом случае, данные не копируются, требуя постоянного времени. Если экземпляр с разделением данных изменяется, то он будет скопирован (copy-on-write), требуя линейного времени. Если this - не пустой QByteArray, то создаётся глубокая копия (deep copy) данных, требуя линейного времени. Смотрите также append() и insert(). QByteArray & QByteArray::prepend ( const char * str )Это перегруженная функция. Добавляет строку str перед этим массивом. QByteArray & QByteArray::prepend ( const char * str, int len )Это перегруженная функция. Добавляет len байтов строки str в данный байтовый массив. Эта функция была введена в Qt 4.6. QByteArray & QByteArray::prepend ( char ch )Это перегруженная функция. Добавляет символ chперед этим массивом. void QByteArray::push_back ( const QByteArray & other )Эта функция обеспечивает совместимость с STL. Это эквивалентно append(other). void QByteArray::push_back ( const char * str )Это перегруженная функция. Тоже самое, что и append(str). void QByteArray::push_back ( char ch )Это перегруженная функция. Тоже самое, что и append(ch). void QByteArray::push_front ( const QByteArray & other )Эта функция обеспечивает совместимость с STL. Это эквивалентно prepend(other). void QByteArray::push_front ( const char * str )Это перегруженная функция. Тоже самое, что и prepend(str). void QByteArray::push_front ( char ch )Это перегруженная функция. Тоже самое, что и prepend(ch). QByteArray & QByteArray::remove ( int pos, int len )Удаляет len байт из массива, начиная с позиции с индексом pos, и возвращает ссылку на массив. Если pos не попадает в границы массива, то ничего не происходит. Если pos действительный, но pos + len больше, чем размер массива, то массив усекается по позиции pos. Пример: QByteArray ba("Montreal"); ba.remove(1, 4); // ba == "Meal" Смотрите также insert() и replace(). QByteArray QByteArray::repeated ( int times ) constВозвращает копию данного байтового массива, повторенную заданного количество раз. Если количество повторов times меньше 1, то возвращается пустой байтовый массив. Пример: QByteArray ba("ab"); ba.repeated(4); // возвращает "abababab" Эта функция была введена в Qt 4.5. QByteArray & QByteArray::replace ( int pos, int len, const QByteArray & after )Заменяет len байт начиная с позиции с индексом pos на байтовый массив after, и возвращает ссылку на этот массив. Пример: QByteArray x("Say yes!"); QByteArray y("no"); x.replace(4, 3, y); // x == "Say no!" Смотрите также insert() и remove(). QByteArray & QByteArray::replace ( int pos, int len, const char * after )Это перегруженная функция. Заменяет len байт начиная с позиции индекса pos строкой с завершающим нулем after. Предупреждение: это может изменить длину байтового массива. QByteArray & QByteArray::replace ( int pos, int len, const char * after, int alen )Это перегруженная функция. Заменяет len байт начиная с позиции pos на alen байт из строки after. after может содержать символы '\0'. Эта функция была введена в Qt 4.7. QByteArray & QByteArray::replace ( const QByteArray & before, const QByteArray & after )Это перегруженная функция. Заменяет каждое вхождение массива before на массив after. Пример: QByteArray ba("colour behaviour flavour neighbour"); ba.replace(QByteArray("ou"), QByteArray("o")); // ba == "color behavior flavor neighbor" QByteArray & QByteArray::replace ( const char * before, const QByteArray & after )Это перегруженная функция. Заменяет каждое вхождение строки before на массив after. QByteArray & QByteArray::replace ( const char * before, int bsize, const char * after, int asize )Это перегруженная функция. Заменяет каждое вхождение строки before на строку after. Поскольку размеры строк заданы bsize и asize, они могут содержать нулевые символы и им не нужно заканчиваться нулем. QByteArray & QByteArray::replace ( const QByteArray & before, const char * after )Это перегруженная функция. Заменяет каждое вхождение массива before на строку after. QByteArray & QByteArray::replace ( const QString & before, const QByteArray & after )Это перегруженная функция. Заменяет каждое вхождение строки before на массив after. Данные в Unicode конвертируются в 8-битные символы используя функцию QString::toAscii(). Если QString содержит не-ASCII Unicode символы, использование этой функции может привести к потере информации. Вы можете запретить эту функцию объявив макрос QT_NO_CAST_TO_ASCII, перед компиляцией приложения. Теперь вы должны будете вызвать QString::toAscii() (или QString::toLatin1(), или QString::toUtf8(), или QString::toLocal8Bit()), если вам нужно конвертировать данные в const char *. QByteArray & QByteArray::replace ( const QString & before, const char * after )Это перегруженная функция. Заменяет каждое вхождение строки before на строку after. QByteArray & QByteArray::replace ( const char * before, const char * after )Это перегруженная функция. Заменяет каждое вхождение строки before на строку after. QByteArray & QByteArray::replace ( char before, const QByteArray & after )Это перегруженная функция. Заменяет каждое вхождение символа before на массив after. QByteArray & QByteArray::replace ( char before, const QString & after )Это перегруженная функция. Заменяет каждое вхождение символа before на строку after. Данные в Unicode конвертируются в 8-битные символы используя функцию QString::toAscii(). Если QString содержит не-ASCII Unicode символы, использование этой функции может привести к потере информации. Вы можете запретить эту функцию объявив макрос QT_NO_CAST_TO_ASCII, перед компиляцией приложения. Теперь вы должны будете вызвать QString::toAscii() (или QString::toLatin1(), или QString::toUtf8(), или QString::toLocal8Bit()), если вам нужно конвертировать данные в const char *. QByteArray & QByteArray::replace ( char before, const char * after )Это перегруженная функция. Заменяет каждое вхождение символа before на строку after. QByteArray & QByteArray::replace ( char before, char after )Это перегруженная функция. Заменяет каждое вхождение символа before на символ after. void QByteArray::reserve ( int size )Попытка зарезервировать место в памяти размером, по крайней мере, size байт. Если вы знаете наперёд насколько большим будет массив, вы можете вызвать эту функцию, и, если вы вызываете resize() много раз, то, возможно, получите лучшую производительность. Если size недооценён, то самое худшее, что может произойти это то, что QByteArray будет работать медленнее. Единственная цель этой функции обеспечить оптимальное использование памяти в QByteArray. Вообще, у вас крайне редко возникнет необходимость вызывать эту функцию. Если вы хотите изменить размер массива, вызывайте resize(). Смотрите также squeeze() и capacity(). void QByteArray::resize ( int size )Устанавливает размер массива в size байт. Если size больше, чем текущий размер, то байтовый массив увеличится до size байт, добавив дополнительные байты в конец. Новые байты ничем не проинициализированы. Если size меньше, чем текущий размер, то в конце массива будут удалены лишние байты. Смотрите также size() и truncate(). QByteArray QByteArray::right ( int len ) constВозвращает массив, содержащий len крайних справа байт из этого массива. Массив будет возвращен полностью, если len больше, чем size(). Пример: QByteArray x("Pineapple"); QByteArray y = x.right(5); // y == "apple" Смотрите также endsWith(), left() и mid(). QByteArray QByteArray::rightJustified ( int width, char fill = ' ', bool truncate = false ) constВозвращает байтовый массив размером width, который содержит символ fill, за которым следует этот массив. Если truncate равно false и размер массива больше, чем width, то возвращается массив, являющийся копией этого массива. Если truncate равен true и размер массива больше, чем width, то возвращается массив, усечённый в позиции width. Пример: QByteArray x("apple"); QByteArray y = x.rightJustified(8, '.'); // y == "...apple" Смотрите также leftJustified(). QByteArray & QByteArray::setNum ( int n, int base = 10 )Устанавливает массив в печатное представление числа n по основанию base (по умолчанию 10) и возвращает ссылку на массив. Параметр base может быть любым значением от 2 до 36. Пример: QByteArray ba; int n = 63; ba.setNum(n); // ba == "63" ba.setNum(n, 16); // ba == "3f" Замечание: Формат числа не локализован; по умолчанию используется локаль Cи независимо от пользовательской локали. Смотрите также number() и toInt(). QByteArray & QByteArray::setNum ( uint n, int base = 10 )Это перегруженная функция. Смотрите также toUInt(). QByteArray & QByteArray::setNum ( short n, int base = 10 )Это перегруженная функция. Смотрите также toShort(). QByteArray & QByteArray::setNum ( ushort n, int base = 10 )Это перегруженная функция. Смотрите также toUShort(). QByteArray & QByteArray::setNum ( qlonglong n, int base = 10 )Это перегруженная функция. Смотрите также toLongLong(). QByteArray & QByteArray::setNum ( qulonglong n, int base = 10 )Это перегруженная функция. Смотрите также toULongLong(). QByteArray & QByteArray::setNum ( double n, char f = 'g', int prec = 6 )Это перегруженная функция. Устанавливает массив в печатное представление числа n, представленное в формате f с точностью prec и возвращает ссылку на байтовый массив. Формат f может быть следующим:
Для 'e', 'E' и 'f' параметр prec указывает количество цифр после точки. Для 'g' и 'G' параметр prec указывает максимальное количество значащих цифр (замыкающие нули опускаются). Замечание: Формат числа не локализован; по умолчанию используется локаль Cи независимо от пользовательской локали. Смотрите также toDouble(). QByteArray & QByteArray::setNum ( float n, char f = 'g', int prec = 6 )Это перегруженная функция. Устанавливает массив в печатное представление числа n, представленное в формате f с точностью prec и возвращает ссылку на байтовый массив. Замечание: Формат числа не локализован; по умолчанию используется локаль Cи независимо от пользовательской локали. Смотрите также toFloat(). QByteArray & QByteArray::setRawData ( const char * data, uint size )Переустанавливает QByteArray для использования первых size байт массива data. Байты не копируются. QByteArray будет содержать указатель data. Вызывающий должен гарантировать, что data не будет удалён или изменён до тех пор, пока существует этот QByteArray и любые его копии, которые не были изменены. Эта функция может быть использована вместо fromRawData() для повторного использования существующих объектов QByteArray для сохранения перераспределения памяти. Эта функция была введена в Qt 4.7. Смотрите также fromRawData(), data() и constData(). QByteArray QByteArray::simplified () constВозвращает байтовый массив, у которого удалены пробельные символы в начале и в конце, и у которого все последовательные пробельные символы заменены одиночным пробелом. Пробельными символами являются символы, для которых по стандарту C++ функция isspace() возвращает true. Они включают ASCII символы '\t', '\n', '\v', '\f', '\r' и ' '. Пример: QByteArray ba(" lots\t of\nwhitespace\r\n "); ba = ba.simplified(); // ba == "lots of whitespace"; Смотрите также trimmed(). int QByteArray::size () constВозвращает количество байт в этом массиве. Последний байт в массиве находится в позиции size() - 1. Кроме того, QByteArray гарантированно всегда содержит в позиции size() символ '\0', так что вы можете использовать значение, возвращаемое функциями data() и constData() в качестве аргумента для функций, требующих строки, оканчивающиеся нулем ('\0'). Если объект QByteArray создавался из сырых данных, не включающих завершающий нультерминальный символ, то QByteArray не добавляет его автоматически, если только не создаётся глубокая копия. Пример: QByteArray ba("Hello"); int n = ba.size(); // n == 5 ba.data()[0]; // возвращает 'H' ba.data()[4]; // возвращает 'o' ba.data()[5]; // возвращает '\0' Смотрите также isEmpty() и resize(). QList<QByteArray> QByteArray::split ( char sep ) constРасщепляет массив там, где встречается символ sep, и возвращает список получившихся массивов. Если sep не встретился нигде в массиве, split() вернет список, состоящий из одного элемента, содержащего весь массив. void QByteArray::squeeze ()Освобождает любую память, не требующуюся для хранения данных массива. Единственная цель этой функции обеспечить оптимальное использование памяти в QByteArray. Вообще, у вас крайне редко возникнет необходимость вызывать эту функцию. Смотрите также reserve() и capacity(). bool QByteArray::startsWith ( const QByteArray & ba ) constВозвращает true, если этот массив начинается с массива ba; в противном случае возвращает false. Пример: QByteArray url("ftp://ftp.qt.nokia.com/"); if (url.startsWith("ftp:")) ... Смотрите также endsWith() и left(). bool QByteArray::startsWith ( const char * str ) constЭто перегруженная функция. Возвращает true, если массив начинается со строки str; в противном случае возвращает false. bool QByteArray::startsWith ( char ch ) constЭто перегруженная функция. Возвращает true, если массив начинается с символа ch; в противном случае возвращает false. void QByteArray::swap ( QByteArray & other )Меняет другой массив байт other с этим массивом байт. Эта операция очень быстрая и не может завершиться ошибкой. Эта функция была введена в Qt 4.8. QByteArray QByteArray::toBase64 () constВозвращает копию массива в кодировке Base64. QByteArray text("Qt is great!"); text.toBase64(); // возвращает "UXQgaXMgZ3JlYXQh" Алгоритм, использующийся при кодировании в кодировке Base64, определен в RFC 2045. Смотрите также fromBase64(). double QByteArray::toDouble ( bool * ok = 0 ) constВозвращает массив преобразованный в значение типа double. Возвращает 0.0, если преобразование не удалось. Если ok не 0: если произошла ошибка, то *ok будет установлен в false; в противном случае *ok будет установлен в true. QByteArray string("1234.56"); double a = string.toDouble(); // a == 1234.56 Замечание: Конвертирование числа выполняется, по умолчанию, в локали Си, независимо от пользовательской локали. Смотрите также number(). float QByteArray::toFloat ( bool * ok = 0 ) constВозвращает массив преобразованный в значение типа float. Возвращает 0.0, если преобразование не удалось. Если ok не 0: если произошла ошибка, то *ok будет установлен в false; в противном случае *ok будет установлен в true. Замечание: Конвертирование числа выполняется, по умолчанию, в локали Си, независимо от пользовательской локали. Смотрите также number(). QByteArray QByteArray::toHex () constВозвращает копию массива, преобразованного в шестнадцатеричный вид. Шестнадцатеричное представление использует цифры 0-9 и буквы a-f. Смотрите также fromHex(). int QByteArray::toInt ( bool * ok = 0, int base = 10 ) constВозвращает массив, преобразованный в значение типа int, используя систему исчисления base, которая по умолчанию равна 10 и может быть любым числом от 2 до 36 или 0. Если base равна 0, то система исчисления определяется автоматически по следующим правилам: если массив начинается с "0x" - это шестнадцатеричное представление; если массив начинается с "0" - это восьмеричное представление числа; в остальных случаях это десятичное представление. Возвращает 0, если преобразование не удалось. Если ok не 0: если произошла ошибка, то *ok будет установлен в false; в противном случае *ok будет установлен в true. QByteArray str("FF"); bool ok; int hex = str.toInt(&ok, 16); // hex == 255, ok == true int dec = str.toInt(&ok, 10); // dec == 0, ok == false Замечание: Конвертирование числа выполняется, по умолчанию, в локали Си, независимо от пользовательской локали. Смотрите также number(). long QByteArray::toLong ( bool * ok = 0, int base = 10 ) constВозвращает массив, преобразованный в значение типа long, используя систему исчисления по базе base, которая по умолчанию равна 10 и может быть любым числом от 2 до 36 или 0. Если base равна 0, то система исчисления определяется автоматически по следующим правилам: если массив начинается с "0x" - это шестнадцатеричное представление; если массив начинается с "0" - это восьмеричное представление числа; в остальных случаях это десятичное представление. Возвращает 0, если преобразование не удалось. Если ok не 0: если произошла ошибка, то *ok будет установлен в false; в противном случае *ok будет установлен в true. QByteArray str("FF"); bool ok; long hex = str.toLong(&ok, 16); // hex == 255, ok == true long dec = str.toLong(&ok, 10); // dec == 0, ok == false Замечание: Конвертирование числа выполняется, по умолчанию, в локали Си, независимо от пользовательской локали. Эта функция была введена в Qt 4.1. Смотрите также number(). qlonglong QByteArray::toLongLong ( bool * ok = 0, int base = 10 ) constВозвращает массив, преобразованный в значение типа long long, используя систему исчисления по базе base, которая по умолчанию равна 10 и может быть любым числом от 2 до 36 или 0. Если base равна 0, то система исчисления определяется автоматически по следующим правилам: если массив начинается с "0x" - это шестнадцатеричное представление; если массив начинается с "0" - это восьмеричное представление числа; в остальных случаях это десятичное представление. Возвращает 0, если преобразование не удалось. Если ok не 0: если произошла ошибка, то *ok будет установлен в false; в противном случае *ok будет установлен в true. Замечание: Конвертирование числа выполняется, по умолчанию, в локали Си, независимо от пользовательской локали. Смотрите также number(). QByteArray QByteArray::toLower () constВозвращает копию массива с символами в нижнем регистре. Массив воспринимается как строка в кодировке Latin-1. Пример: QByteArray x("Qt by NOKIA"); QByteArray y = x.toLower(); // y == "qt by nokia" Смотрите также toUpper() и Сравнение 8-битных символов. QByteArray QByteArray::toPercentEncoding ( const QByteArray & exclude = QByteArray(), const QByteArray & include = QByteArray(), char percent = '%' ) constВозвращает копию массива в процентном представлении в URI/URL-стиле. Параметр percent позволяет вам переопределить умалчиваемый символ '%' на другой символ. По умолчанию эта функция перекодирует все символы, которые не входят в следующее множество: ALPHA ("a" to "z" and "A" to "Z") / DIGIT (0 to 9) / "-" / "." / "_" / "~" Чтобы предотвратить перекодировку символа, укажите его в аргументе exclude. Чтобы заставить перекодировать символ (из выше указанного множества), укажите его в аргументе include. Символ percent всегда перекодируется. Пример: QByteArray text = "{a fishy string?}"; QByteArray ba = text.toPercentEncoding("{}", "s"); qDebug(ba.constData()); // prints "{a fi%73hy %73tring%3F}" Шестнадцатеричное кодирование использует цифры 0-9 и буквы A-F в верхнем регистре. Эта функция была введена в Qt 4.4. Смотрите также fromPercentEncoding() и QUrl::toPercentEncoding(). short QByteArray::toShort ( bool * ok = 0, int base = 10 ) constВозвращает массив, преобразованный в значение типа short, используя систему исчисления по базе base, которая по умолчанию равна 10 и может быть любым числом от 2 до 36 или 0. Если base равна 0, то система исчисления определяется автоматически по следующим правилам: если массив начинается с "0x" - это шестнадцатеричное представление; если массив начинается с "0" - это восьмеричное представление числа; в остальных случаях это десятичное представление. Возвращает 0, если преобразование не удалось. Если ok не 0: если произошла ошибка, то *ok будет установлен в false; в противном случае *ok будет установлен в true. Замечание: Конвертирование числа выполняется, по умолчанию, в локали Си, независимо от пользовательской локали. Смотрите также number(). uint QByteArray::toUInt ( bool * ok = 0, int base = 10 ) constВозвращает массив, преобразованный в значение типа unsigned int, используя систему исчисления по базе base, которая по умолчанию равна 10 и может быть любым числом от 2 до 36 или 0. Если base равна 0, то система исчисления определяется автоматически по следующим правилам: если массив начинается с "0x" - это шестнадцатеричное представление; если массив начинается с "0" - это восьмеричное представление числа; в остальных случаях это десятичное представление. Возвращает 0, если преобразование не удалось. Если ok не 0: если произошла ошибка, то *ok будет установлен в false; в противном случае *ok будет установлен в true. Замечание: Конвертирование числа выполняется, по умолчанию, в локали Си, независимо от пользовательской локали. Смотрите также number(). ulong QByteArray::toULong ( bool * ok = 0, int base = 10 ) constВозвращает массив, преобразованный в значение типа unsigned long int, используя систему исчисления по базе base, которая по умолчанию равна 10 и может быть любым числом от 2 до 36 или 0. Если base равна 0, то система исчисления определяется автоматически по следующим правилам: если массив начинается с "0x" - это шестнадцатеричное представление; если массив начинается с "0" - это восьмеричное представление числа; в остальных случаях это десятичное представление. Возвращает 0, если преобразование не удалось. Если ok не 0: если произошла ошибка, то *ok будет установлен в false; в противном случае *ok будет установлен в true. Замечание: Конвертирование числа выполняется, по умолчанию, в локали Си, независимо от пользовательской локали. Эта функция была введена в Qt 4.1. Смотрите также number(). qulonglong QByteArray::toULongLong ( bool * ok = 0, int base = 10 ) constВозвращает массив, преобразованный в значение типа unsigned long long, используя систему исчисления по базе base, которая по умолчанию равна 10 и может быть любым числом от 2 до 36 или 0. Если base равна 0, то система исчисления определяется автоматически по следующим правилам: если массив начинается с "0x" - это шестнадцатеричное представление; если массив начинается с "0" - это восьмеричное представление числа; в остальных случаях это десятичное представление. Возвращает 0, если преобразование не удалось. Если ok не 0: если произошла ошибка, то *ok будет установлен в false; в противном случае *ok будет установлен в true. Замечание: Конвертирование числа выполняется, по умолчанию, в локали Си, независимо от пользовательской локали. Смотрите также number(). ushort QByteArray::toUShort ( bool * ok = 0, int base = 10 ) constВозвращает массив, преобразованный в значение типа unsigned short, используя систему исчисления по базе base, которая по умолчанию равна 10 и может быть любым числом от 2 до 36 или 0. Если base равна 0, то система исчисления определяется автоматически по следующим правилам: если массив начинается с "0x" - это шестнадцатеричное представление; если массив начинается с "0" - это восьмеричное представление числа; в остальных случаях это десятичное представление. Возвращает 0, если преобразование не удалось. Если ok не 0: если произошла ошибка, то *ok будет установлен в false; в противном случае *ok будет установлен в true. Замечание: Конвертирование числа выполняется, по умолчанию, в локали Си, независимо от пользовательской локали. Смотрите также number(). QByteArray QByteArray::toUpper () constВозвращает копию массива в верхнем регистре. Массив воспринимается как строка в кодировке Latin-1. Пример: QByteArray x("Qt by NOKIA"); QByteArray y = x.toUpper(); // y == "QT BY NOKIA" Смотрите также toLower() и Сравнение 8-битных символов. QByteArray QByteArray::trimmed () constВозвращает массив, у которого в начале и в конце удалены пробельные символы. Пробельными символами являются символы, для которых по стандарту C++ функция isspace() возвращает true. Они включают ASCII символы '\t', '\n', '\v', '\f', '\r' и ' '. Пример: QByteArray ba(" lots\t of\nwhitespace\r\n "); ba = ba.trimmed(); // ba == "lots\t of\nwhitespace"; В отличие от simplified(), trimmed() удаляет и одиночные пробельные символы. Смотрите также simplified(). void QByteArray::truncate ( int pos )Усекает байтовый массив в позиции с индексом pos. Если pos выходит за пределы массива, ничего не происходит. Пример: QByteArray ba("Stockholm"); ba.truncate(5); // ba == "Stock" Смотрите также chop(), resize() и left(). QByteArray::operator const char * () constВозвращает указатель на данные, хранящиеся массиве. Указатель можно использовать для доступа к байтам, которые составляют массив. Данные завершаются символом '\0'. Указатель остается действительным до тех пор, пока массив не будет перераспределен в памяти или разрушен. Этот оператор в основном используется для передачи массива в функцию, которая принимает const char *. Вы можете запретить этот оператор, объявив макрос QT_NO_CAST_FROM_BYTEARRAY, перед компиляцией приложения. Замечание: QByteArray может хранить любые значения байт, включая '\0', но большинство функций, которые принимают в качестве аргумента char * предполагают, что данные завершаются первым встретившимся '\0'. Смотрите также constData(). QByteArray::operator const void * () constВозвращает указатель на данные, хранящиеся массиве. Указатель можно использовать для доступа к байтам, которые составляют массив. Данные завершаются символом '\0'. Указатель остается действительным до тех пор, пока массив не будет перераспределен в памяти или разрушен. Этот оператор в основном используется для передачи массива в функцию, которая принимает const char *. Вы можете запретить этот оператор, объявив макрос QT_NO_CAST_FROM_BYTEARRAY, перед компиляцией приложения. Замечание: QByteArray может хранить любые значения байт, включая '\0', но большинство функций, которые принимают в качестве аргумента char * предполагают, что данные завершаются первым встретившимся '\0'. Смотрите также constData(). bool QByteArray::operator!= ( const QString & str ) constВозвращает true, если этот байтовый массив не равен строке str; в противном случае возвращает false. Данные в Unicode конвертируются в 8-битные символы с использованием QString::toAscii(). Сравнение чувствительно к регистру. Вы можете отключить этот оператор, объявив макрос QT_NO_CAST_FROM_ASCII перед компиляцией приложения. Теперь вам нужно явно вызывать QString::fromAscii(), QString::fromLatin1(), QString::fromUtf8() или QString::fromLocal8Bit(), если вы хотите преобразовать байтовый массив в QString перед тем, как выполнить сравнение. QByteArray & QByteArray::operator+= ( const QByteArray & ba )Добавляет байтовый массив ba в конец этого байтового массива и возвращает ссылку на этот байтовый массив. Пример: QByteArray x("free"); QByteArray y("dom"); x += y; // x == "freedom" Замечание: QByteArray это класс с неявным совместным использованием данных. Следовательно, если this является пустым QByteArray, то this просто будет совместно использовать данные хранящиеся в ba. В этом случае, данные не копируются, требуя постоянного времени. Если экземпляр с разделением данных изменяется, то он будет скопирован (copy-on-write), требуя линейного времени. Если this - не пустой QByteArray, то создаётся глубокая копия (deep copy) данных, требуя линейного времени. Обычно эта операция не страдает от распределения накладных расходов, поскольку QByteArray предварительно распределяет дополнительное пространство в конце данных, так что оно может увеличиться без перераспределения при каждой операции добавления. Смотрите также append() и prepend(). QByteArray & QByteArray::operator+= ( const QString & str )Это перегруженная функция. Добавляет строку str в конец этого байтового массива и возвращает ссылку на этот байтовый массив. Данные в кодировке Unicode конвертируются в 8-битные символы с помощью QString::toAscii(). Если в QString содержатся не ASCII символы в кодировке Unicode, использование этого оператора может привести к потере информации. Вы можете запретить использование этого оператора, объявив макрос QT_NO_CAST_TO_ASCII, перед компиляцией вашего приложения Теперь вы должны будете вызвать QString::toAscii() (или QString::toLatin1(), или QString::toUtf8(), или QString::toLocal8Bit()), если вам нужно конвертировать данные в const char *. QByteArray & QByteArray::operator+= ( const char * str )Это перегруженная функция. Добавляет строку str в конец этого байтового массива и возвращает ссылку на этот байтовый массив. QByteArray & QByteArray::operator+= ( char ch )Это перегруженная функция. Добавляет символ ch в конец этого байтового массива и возвращает ссылку на этот массив. bool QByteArray::operator< ( const QString & str ) constВозвращает true, если этот байтовый массив лексически меньше, чем строка str; в противном случае возвращает false. Данные в Unicode конвертируются в 8-битные символы с использованием QString::toAscii(). Сравнение чувствительно к регистру. Вы можете отключить этот оператор, объявив макрос QT_NO_CAST_FROM_ASCII перед компиляцией приложения. Теперь вам нужно явно вызывать QString::fromAscii(), QString::fromLatin1(), QString::fromUtf8() или QString::fromLocal8Bit(), если вы хотите преобразовать байтовый массив в QString перед тем, как выполнить сравнение. bool QByteArray::operator<= ( const QString & str ) constВозвращает true, если байтовый массив лексически меньше или равен строке str; в противном случае возвращает false. Данные в Unicode конвертируются в 8-битные символы с использованием QString::toAscii(). Сравнение чувствительно к регистру. Вы можете отключить этот оператор, объявив макрос QT_NO_CAST_FROM_ASCII перед компиляцией приложения. Теперь вам нужно явно вызывать QString::fromAscii(), QString::fromLatin1(), QString::fromUtf8() или QString::fromLocal8Bit(), если вы хотите преобразовать байтовый массив в QString перед тем, как выполнить сравнение. QByteArray & QByteArray::operator= ( const QByteArray & other )Присваивает other этому байтовому массиву и возвращает ссылку на этот байтовый массив. QByteArray & QByteArray::operator= ( const char * str )Это перегруженная функция. Присваивает str этому байтовому массиву. bool QByteArray::operator== ( const QString & str ) constВозвращает true, если этот байтовый массив равен строке str; в противном случае возвращает false. Данные в Unicode конвертируются в 8-битные символы с использованием QString::toAscii(). Сравнение чувствительно к регистру. Вы можете отключить этот оператор, объявив макрос QT_NO_CAST_FROM_ASCII перед компиляцией приложения. Теперь вам нужно явно вызывать QString::fromAscii(), QString::fromLatin1(), QString::fromUtf8() или QString::fromLocal8Bit(), если вы хотите преобразовать байтовый массив в QString перед тем, как выполнить сравнение. bool QByteArray::operator> ( const QString & str ) constВозвращает true, если этот байтовый массив лексически больше, чем строка str; в противном случае возвращает false. Данные в Unicode конвертируются в 8-битные символы с использованием QString::toAscii(). Сравнение чувствительно к регистру. Вы можете отключить этот оператор, объявив макрос QT_NO_CAST_FROM_ASCII перед компиляцией приложения. Теперь вам нужно явно вызывать QString::fromAscii(), QString::fromLatin1(), QString::fromUtf8() или QString::fromLocal8Bit(), если вы хотите преобразовать байтовый массив в QString перед тем, как выполнить сравнение. bool QByteArray::operator>= ( const QString & str ) constВозвращает true, если байтовый массив больше или равен строке str; в противном случае возвращает false. Данные в Unicode конвертируются в 8-битные символы с использованием QString::toAscii(). Сравнение чувствительно к регистру. Вы можете отключить этот оператор, объявив макрос QT_NO_CAST_FROM_ASCII перед компиляцией приложения. Теперь вам нужно явно вызывать QString::fromAscii(), QString::fromLatin1(), QString::fromUtf8() или QString::fromLocal8Bit(), если вы хотите преобразовать байтовый массив в QString перед тем, как выполнить сравнение. QByteRef QByteArray::operator[] ( int i )Возвращает байт из позиции с индексом i, доступный для изменения. Если присваивание производится за пределами байтового массива, перед присваиванием массив будет удлинен с помощью resize(). Пример: QByteArray ba; for (int i = 0; i < 10; ++i) ba[i] = 'A' + i; // ba == "ABCDEFGHIJ" Возвращаемое значение имеет тип QByteRef, это вспомогательный класс QByteArray. Когда вы получаете объект типа QByteRef, вы можете использовать его, как если бы он был char &. Если вы присваиваете ему, то присваивание будет применяться к символу в QByteArray, на который вы получили ссылку. Смотрите также at(). char QByteArray::operator[] ( int i ) constЭто перегруженная функция. Тоже самое, что и at(i). QByteRef QByteArray::operator[] ( uint i )Это перегруженная функция. char QByteArray::operator[] ( uint i ) constЭто перегруженная функция. Связанные нечлены классаquint16 qChecksum ( const char * data, uint len )Возвращает контрольную сумму CRC-16 для первых len байт из data. Контрольная сумма не зависит от порядка байтов (endianness). Замечание: Эта функция является реализацией алгоритма быстрого (табличного) расчёта CRC-16-CCITT. QByteArray qCompress ( const QByteArray & data, int compressionLevel = -1 )Упаковывает байтовый массив data и возвращает упакованные данные в виде нового байтового массива. Параметр compressionLevel определяет, какая степень сжатия должна использоваться. Допустимые значения от 0 до 9, 9 соответствует максимальному сжатию (т.е. минимальный размер сжатых данных) за счет использования более медленного алгоритма. Меньшие значения (8, 7, ..., 1) обеспечивают, соответственно, меньшее сжатие за чуть меньшее время. Значение 0 отменяет сжатие совсем. Значение по умолчанию равно -1, что указывает библиотеке zlib сжатие по умолчанию. Смотрите также qUncompress(). QByteArray qCompress ( const uchar * data, int nbytes, int compressionLevel = -1 )Это перегруженная функция. Упаковывает первые nbytes из data и возвращает упакованные данные в виде нового массива. QByteArray qUncompress ( const QByteArray & data )Распаковывает байтовый массив data и возвращает новый байтовый массив с распакованными данными. Возвращает пустой (empty) QByteArray, если входные данные испорчены. Эта функция распакует данные, сжатые с помощью qCompress() из этой и любой предыдущей версии Qt, начиная с Qt 3.1, когда эта возможность была введена. Замечание: Если вы хотите использовать эту функцию для распаковки внешних данных, сжатых с помощью zlib, то вам необходимо добавить четыре байта заголовка в начало массива байт, содержащего данные. Заголовок должен содержать ожидаемую длину (в байтах) несжатых данных, выраженную как беззнаковое 32-разрядное целое число с обратным порядком байт. Смотрите также qCompress(). QByteArray qUncompress ( const uchar * data, int nbytes )Это перегруженная функция. Распаковывает первые nbytes из data и возвращает новый массив с распакованными данными. int qsnprintf ( char * str, size_t n, const char * fmt, ... )Портированная функция snprintf(), вызывает qvsnprintf. fmt - это строка форматирования printf(). Результат помещается в str, который является буфером по крайней мере из n байт. Предупреждение: Вызывайте эту функцию только тогда, когда вы знаете, что вы делаете, так как она по-разному работает на различных платформах. Взамен используйте QString::sprintf() для формирования строки по формату. Смотрите также qvsnprintf() и QString::sprintf(). int qstrcmp ( const char * str1, const char * str2 )Безопасная функция strcmp(). Сравнивает str1 и str2. Возвращает отрицательное значение, если str1 меньше, чем str2, 0, если str1 эквивалентна str2 или положительное значение, если str1 больше, чем str2. Особый случай 1: Возвращает 0, если str1 и str2 обе 0. Особый случай 2: Возвращает случайное ненулевое значение, если str1 равна 0 или str2 равна 0 (но не обе). Смотрите также qstrncmp(), qstricmp(), qstrnicmp() и Сравнение 8-битных символов. char * qstrcpy ( char * dst, const char * src )Копирует все символы, включая '\0', из src в dst и возвращает указатель на dst. Если src равна 0, немедленно возвращается 0. Эта функция предполагает, что dst достаточно большая, чтобы в нее поместились все данные из src. Смотрите также qstrncpy(). char * qstrdup ( const char * src )Возвращает дубликат строки. Выделяет память для копии src, копирует её и возвращает указатель на копию. Если src равен 0, то сразу же возвращается 0. Владельцем становится вызывающий, поэтому возвращаемая строка должна быть удалена с помощью delete[]. int qstricmp ( const char * str1, const char * str2 )Безопасная функция stricmp(). Сравнивает str1 и str2 игнорируя регистр символов. Предполагается, что строка в кодировке Latin-1. Возвращает отрицательное значение, если str1 меньше, чем str2, 0, если str1 равна str2 или положительное значение, если str1 больше, чем str2. Особый случай 1: Возвращает 0, если str1 и str2 обе 0. Особый случай 2: Возвращает случайное ненулевое значение, если str1 равна 0 или str2 равна 0 (но не обе). Смотрите также qstrcmp(), qstrncmp(), qstrnicmp() и Сравнение 8-битных символов. uint qstrlen ( const char * str )Безопасная функция strlen(). Возвращает количество символов, которое предшествует символу '\0', или 0, если str равна 0. Смотрите также qstrnlen(). int qstrncmp ( const char * str1, const char * str2, uint len )Безопасная функция strncmp(). Сравнивает не больше, чем len байт в str1 и str2. Возвращает отрицательное значение, если str1 меньше, чем str2, 0, если str1 равна str2 или положительное значение, если str1 больше, чем str2. Особый случай 1: Возвращает 0, если str1 и str2 обе 0. Особый случай 2: Возвращает случайное ненулевое значение, если str1 равна 0 или str2 равна 0 (но не обе). Смотрите также qstrcmp(), qstricmp(), qstrnicmp() и Сравнение 8-битных символов. char * qstrncpy ( char * dst, const char * src, uint len )Безопасная функция strncpy(). Копирует не больше чем len байт из src (останавливается на len или на конечном '\0', в зависимости от того, что встретится первым) в dst и возвращает указатель на dst. Гарантирует, что dst заканчивается '\0'. Если src или dst равны 0, немедленно возвращается 0. Эта функция подразумевает, что dst по меньшей мере длиной в len символов. Примечание: При компиляции с компилятором Visual C++ версии 14.00 (Visual C++ 2005) или старше, то внутри будет использована функция strncpy_s. Смотрите также qstrcpy(). int qstrnicmp ( const char * str1, const char * str2, uint len )Безопасная функция strnicmp(). Сравнивает не больше len байт str1 и str2, игнорируя регистр символов. Предполагается, что строка в кодировке Latin-1. Возвращает отрицательное значение, если str1 меньше, чем str2, 0, если str1 равна str2 или положительное значение, если str1 больше, чем str2. Особый случай 1: Возвращает 0, если str1 и str2 обе 0. Особый случай 2: Возвращает случайное ненулевое значение, если str1 равна 0 или str2 равна 0 (но не обе). Смотрите также qstrcmp(), qstrncmp(), qstricmp() и Сравнение 8-битных символов. uint qstrnlen ( const char * str, uint maxlen )Безопаснся функция strnlen(). Возвращает количество символов, которое предшествует символу '\0', но не более maxlen. Если str равна 0, возвращается 0. Эта функция была введена в Qt 4.2. Смотрите также qstrlen(). int qvsnprintf ( char * str, size_t n, const char * fmt, va_list ap )Портированная функция vsnprintf(). Будет вызвана функция ::vsnprintf(), ::_vsnprintf() или ::vsnprintf_s, в зависимости от системы или переход к внутренней версии. fmt - это строка форматирования printf(). Результат помещается в str, который является буфером по крайней мере из n байт. Вызывающий ответственен за вызов функции va_end() у ap. Предупреждение: Поскольку vsnprintf() по-разному работает на разных платформах, то вы не должны полагаться на возвращаемое значение или на то, что всегда будете получать строки с завершающим 0. В идеале, вы никогда не должны вызывать эту функцию, а использовать вместо неё QString::sprintf(). Смотрите также qsnprintf() и QString::sprintf(). bool operator!= ( const QByteArray & a1, const QByteArray & a2 )Это перегруженная функция. Возвращает true, если байтовый массив a1 не равен байтовому массиву a2; в противном случае возвращает false. bool operator!= ( const QByteArray & a1, const char * a2 )Это перегруженная функция. Возвращает true, если байтовый массив a1 не равен строке a2; в противном случае возвращает false. bool operator!= ( const char * a1, const QByteArray & a2 )Это перегруженная функция. Возвращает true, если строка a1 не равна байтовому массиву a2; в противном случае возвращает false. const QByteArray operator+ ( const QByteArray & a1, const char * a2 )Это перегруженная функция. Возвращает байтовый массив, который является результатом конкатенации байтового массива a1 и строки a2. const QByteArray operator+ ( const QByteArray & a1, char a2 )Это перегруженная функция. Возвращает байтовый массив, который является результатом конкатенации байтового массива a1 и символа a2. const QByteArray operator+ ( const char * a1, const QByteArray & a2 )Это перегруженная функция. Возвращает байтовый массив, который является результатом конкатенации строки a1 и байтового массива a2. const QByteArray operator+ ( char a1, const QByteArray & a2 )Это перегруженная функция. Возвращает байтовый массив, который является результатом конкатенации символа a1 и байтового массива a2. const QByteArray operator+ ( const QByteArray & a1, const QByteArray & a2 )Возвращает байтовый массив, который является результатом конкатенации байтового массива a1 и байтового массива a2. Смотрите также QByteArray::operator+=(). bool operator< ( const QByteArray & a1, const QByteArray & a2 )Это перегруженная функция. Возвращает true, если байтовый массив a1 лексически меньше, чем байтовый массив a2; в противном случае возвращает false. bool operator< ( const QByteArray & a1, const char * a2 )Это перегруженная функция. Возвращает true, если байтовый массив a1 лексически меньше, чем строка a2; в противном случае возвращает false. bool operator< ( const char * a1, const QByteArray & a2 )Это перегруженная функция. Возвращает true, если строка a1 лексически меньше, чем байтовый массив a2; в противном случае возвращает false. QDataStream & operator<< ( QDataStream & out, const QByteArray & ba )Записывает байтовый массив ba в поток out и возвращает ссылку на поток. Смотрите также Преобразование типов данных Qt в последовательный вид. bool operator<= ( const QByteArray & a1, const QByteArray & a2 )Это перегруженная функция. Возвращает true, если байтовый массив a1 лексически меньше или равен, байтовому массиву a2; в противном случае возвращает false. bool operator<= ( const QByteArray & a1, const char * a2 )Это перегруженная функция. Возвращает true, если байтовый массив a1 лексически меньше или равен строке a2; в противном случае возвращает false. bool operator<= ( const char * a1, const QByteArray & a2 )Это перегруженная функция. Возвращает true, если строка a1 лексически меньше или равна байтовому массиву a2; в противном случае возвращает false. bool operator== ( const QByteArray & a1, const QByteArray & a2 )Это перегруженная функция. Возвращает true, если байтовый массив a1 равен байтовому массиву a2; в противном случае возвращает false. bool operator== ( const QByteArray & a1, const char * a2 )Это перегруженная функция. Возвращает true, если байтовый массив a1 равен строке a2; в противном случае возвращает false. bool operator== ( const char * a1, const QByteArray & a2 )Это перегруженная функция. Возвращает true, если строка a1 равна байтовому массиву a2; в противном случае возвращает false. bool operator> ( const QByteArray & a1, const QByteArray & a2 )Это перегруженная функция. Возвращает true, если байтовый массив a1 лексически больше, чем байтовый массив a2; в противном случае возвращает false. bool operator> ( const QByteArray & a1, const char * a2 )Это перегруженная функция. Возвращает true, если байтовый массив a1 лексически больше, чем строка a2; в противном случае возвращает false. bool operator> ( const char * a1, const QByteArray & a2 )Это перегруженная функция. Возвращает true, если строка a1 лексически больше, чем байтовый массив a2; в противном случае возвращает false. bool operator>= ( const QByteArray & a1, const QByteArray & a2 )Это перегруженная функция. Возвращает true, если байтовый массив a1 лексически больше или равен, байтовому массиву a2; в противном случае возвращает false. bool operator>= ( const QByteArray & a1, const char * a2 )Это перегруженная функция. Возвращает true, если байтовый массив a1 лексически больше или равен строке a2; в противном случае возвращает false. bool operator>= ( const char * a1, const QByteArray & a2 )Это перегруженная функция. Возвращает true, если строка a1 лексически больше или равна байтовому массиву a2; в противном случае возвращает false. QDataStream & operator>> ( QDataStream & in, QByteArray & ba )Читает байтовый массив в ba из потока in и возвращает ссылку на поток. Смотрите также Преобразование типов данных Qt в последовательный вид. Описание макросовQT_NO_CAST_FROM_BYTEARRAYОтключает автоматическое преобразование из QByteArray в const char * or const void *. Смотрите также QT_NO_CAST_TO_ASCII и QT_NO_CAST_FROM_ASCII. |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |