Класс QTextStream
Класс QTextStream предоставляет удобный интерфейс для чтения и записи текста. Подробнее...
| Заголовок: | #include <QTextStream> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Наследует: | QIODeviceBase |
Примечание: Все функции в этом классе являются повторно-входными.
Открытые типы
| Перечисление | ВыравниваниеПоля { ВыравниваниеСлева, ВыравниваниеСправа, ВыравниваниеПоЦентру, ВыравниваниеБухгалтерскийСтиль } |
| Перечисление | ФлагЧисла { ПоказатьБазу, ВынужденнаяТочка, ВынужденныйЗнак, ЗаглавныеСимволыБазы, ЗаглавныеЦифры } |
| Флаги | ФлагиЧисел |
| Перечисление | НотацияВещественногоЧисла { ЭкспоненциальнаяНотация, ФиксированнаяНотация, УмнаяНотация } |
| Перечисление | Статус { Ok, ДостигнутКонецФайлаПриЧтении, ПоврежденныеДанныеПриЧтении, ОшибкаПриЗаписи } |
Открытые функции
| QTextStream(const QByteArray &array, QIODeviceBase::OpenMode openMode = ReadOnly) | |
| QTextStream(QByteArray *array, QIODeviceBase::OpenMode openMode = ReadWrite) | |
| QTextStream(QString *string, QIODeviceBase::OpenMode openMode = ReadWrite) | |
| QTextStream(FILE *fileHandle, QIODeviceBase::OpenMode openMode = ReadWrite) | |
| QTextStream(QIODevice *device) | |
| QTextStream() | |
| virtual | ~QTextStream() |
| bool | atEnd() const |
| bool | autoDetectUnicode() const |
| QIODevice * | device() const |
| QStringConverter::Encoding | encoding() const |
| QTextStream::FieldAlignment | fieldAlignment() const |
| int | fieldWidth() const |
| void | flush() |
| bool | generateByteOrderMark() const |
| int | integerBase() const |
| QLocale | locale() const |
| QTextStream::NumberFlags | numberFlags() const |
| QChar | padChar() const |
| qint64 | pos() const |
| QString | read(qint64 maxlen) |
| QString | readAll() |
| QString | readLine(qint64 maxlen = 0) |
| bool | readLineInto(QString *line, qint64 maxlen = 0) |
| QTextStream::RealNumberNotation | realNumberNotation() const |
| int | realNumberPrecision() const |
| void | reset() |
| void | resetStatus() |
| bool | seek(qint64 pos) |
| void | setAutoDetectUnicode(bool enabled) |
| void | setDevice(QIODevice *device) |
| void | setEncoding(QStringConverter::Encoding encoding) |
| void | setFieldAlignment(QTextStream::FieldAlignment mode) |
| void | setFieldWidth(int width) |
| void | setGenerateByteOrderMark(bool generate) |
| void | setIntegerBase(int base) |
| void | setLocale(const QLocale &locale) |
| void | setNumberFlags(QTextStream::NumberFlags flags) |
| void | setPadChar(QChar ch) |
| void | setRealNumberNotation(QTextStream::RealNumberNotation notation) |
| void | setRealNumberPrecision(int precision) |
| void | setStatus(QTextStream::Status status) |
| void | setString(QString *string, QIODeviceBase::OpenMode openMode = ReadWrite) |
| void | skipWhiteSpace() |
| QTextStream::Status | status() const |
| QString * | string() const |
| QTextStream & | operator<<(QChar c) |
| QTextStream & | operator<<(char c) |
| QTextStream & | operator<<(short i) |
| QTextStream & | operator<<(unsigned short i) |
| QTextStream & | operator<<(int i) |
| QTextStream & | operator<<(unsigned int i) |
| QTextStream & | operator<<(long i) |
| QTextStream & | operator<<(unsigned long i) |
| QTextStream & | operator<<(qlonglong i) |
| QTextStream & | operator<<(qulonglong i) |
| QTextStream & | operator<<(float f) |
| QTextStream & | operator<<(double f) |
| QTextStream & | operator<<(const QString &string) |
| QTextStream & | operator<<(QStringView string) |
| QTextStream & | operator<<(QLatin1String string) |
| QTextStream & | operator<<(const QByteArray &array) |
| QTextStream & | operator<<(const char *string) |
| QTextStream & | operator<<(const void *ptr) |
| QTextStream & | operator>>(QChar &c) |
| QTextStream & | operator>>(char &c) |
| QTextStream & | operator>>(short &i) |
| QTextStream & | operator>>(unsigned short &i) |
| QTextStream & | operator>>(int &i) |
| QTextStream & | operator>>(unsigned int &i) |
| QTextStream & | operator>>(long &i) |
| QTextStream & | operator>>(unsigned long &i) |
| QTextStream & | operator>>(qlonglong &i) |
| QTextStream & | operator>>(qulonglong &i) |
| QTextStream & | operator>>(float &f) |
| QTextStream & | operator>>(double &f) |
| QTextStream & | operator>>(QString &str) |
| QTextStream & | operator>>(QByteArray &array) |
| QTextStream & | operator>>(char *c) |
Связанные нечлены
| QTextStreamManipulator | qSetFieldWidth(int width) |
| QTextStreamManipulator | qSetPadChar(QChar ch) |
| QTextStreamManipulator | qSetRealNumberPrecision(int precision) |
Подробное описание
QTextStream может работать с QIODevice, QByteArray или QString. Используя операторы потоковой передачи QTextStream, вы можете удобно читать и записывать слова, строки и числа. При генерации текста QTextStream поддерживает параметры форматирования для заполнения и выравнивания полей, а также форматирования чисел. Пример:
QFile data("output.txt");
if (data.open(QFile::WriteOnly | QFile::Truncate)) {
QTextStream out(&data);
out << "Result: " << qSetFieldWidth(10) << left << 3.14 << 2.7;
// writes "Result: 3.14 2.7 "
} Также часто QTextStream используется для чтения ввода консоли и записи вывода консоли. QTextStream учитывает локаль и автоматически декодирует стандартный ввод с использованием правильного кодирования. Пример:
QTextStream stream(stdin);
QString line;
while (stream.readLineInto(&line)) {
...
} Помимо использования конструкторов QTextStream, вы также можете установить устройство или строку, с которыми работает QTextStream, вызвав setDevice() или setString(). Вы можете перейти к позиции, вызвав seek(), и atEnd() вернёт true, когда не останется данных для чтения. Если вы вызовете flush(), QTextStream очистит все данные из буфера записи в устройство и вызовет flush() для устройства.
Внутренне QTextStream использует буфер на основе Unicode, и QStringConverter используется QTextStream для автоматической поддержки различных кодировок. По умолчанию используется UTF-8 для чтения и записи, но вы также можете установить кодировку, вызвав setEncoding(). Также поддерживается автоматическое определение Unicode. Когда эта функция включена (по умолчанию), QTextStream будет определять BOM (Byte Order Mark) UTF-8, UTF-16 или UTF-32 и переключится на соответствующую кодировку UTF при чтении. QTextStream по умолчанию не записывает BOM, но вы можете включить это, вызвав setGenerateByteOrderMark(true). Когда QTextStream работает непосредственно с QString, кодировка отключена.
Существует три основных способа использования QTextStream при чтении текстовых файлов:
- По частям, вызывая readLine() или readAll().
- По словам. QTextStream поддерживает потоковую передачу в QString, QByteArray и буферы char*. Слова разделяются пробелами, и ведущие пробелы автоматически пропускаются.
- Посимвольно, передавая в QChar или char. Этот метод часто используется для удобной обработки ввода при парсинге файлов, независимо от кодировки символов и семантики конца строки. Для пропуска пробелов вызовите skipWhiteSpace().
Поскольку текстовый поток использует буфер, вы не должны читать из потока, используя реализацию суперкласса. Например, если у вас есть QFile и вы читаете из него напрямую с помощью QFile::readLine() вместо использования потока, внутренняя позиция текстового потока будет не синхронизирована с позицией файла.
По умолчанию при чтении чисел из текстового потока QTextStream автоматически определяет представление числа. Например, если число начинается с "0x", предполагается, что оно представлено в шестнадцатеричном формате. Если оно начинается с цифр 1-9, предполагается десятичный формат и так далее. Вы можете установить основание целого числа, тем самым отключив автоматическое определение, вызвав setIntegerBase(). Пример:
QTextStream in("0x50 0x20");
int firstNumber, secondNumber;
in >> firstNumber; // firstNumber == 80
in >> dec >> secondNumber; // secondNumber == 0
char ch;
in >> ch; // ch == 'x' QTextStream поддерживает множество вариантов форматирования для генерации текста. Вы можете установить ширину поля и символ заполнения, вызвав setFieldWidth() и setPadChar(). Используйте setFieldAlignment(), чтобы установить выравнивание внутри каждого поля. Для вещественных чисел вызовите setRealNumberNotation() и setRealNumberPrecision() для установки записи (SmartNotation, ScientificNotation, FixedNotation) и точности в цифрах генерируемого числа. Доступны и некоторые дополнительные варианты форматирования чисел через setNumberFlags().
Как и <iostream> в стандартной библиотеке C++, QTextStream также определяет несколько глобальных функций-манипуляторов:
Кроме того, Qt предоставляет три глобальных манипулятора, которые принимают параметр: qSetFieldWidth(), qSetPadChar() и qSetRealNumberPrecision().
См. также QDataStream, QIODevice, QFile, QBuffer и QTcpSocket.
Документация по типам членов
Перечисление QTextStream::FieldAlignment
Это перечисление определяет, как выравнивать текст в полях, когда поле шире, чем текст, который его занимает.
| Постоянная | Значение | Описание |
|---|---|---|
QTextStream::AlignLeft |
0 |
Выравнивание вправо полей. |
QTextStream::AlignRight |
1 |
Выравнивание влево полей. |
QTextStream::AlignCenter |
2 |
Выравнивание по центру полей. |
QTextStream::AlignAccountingStyle |
3 |
То же самое, что и AlignRight, за исключением того, что знак числа выровнен слева. |
См. также setFieldAlignment().
Перечисление QTextStream::NumberFlagфлаги QTextStream::NumberFlags
Это перечисление определяет различные флаги, которые можно установить для влияния на вывод целых чисел, float и double.
| Постоянная | Значение | Описание |
|---|---|---|
QTextStream::ShowBase |
0x1 |
Отображение основания в качестве префикса, если основание равно 16 ("0x"), 8 ("0") или 2 ("0b"). |
QTextStream::ForcePoint |
0x2 |
Всегда добавлять десятичную запятую в числа, даже если десятичных знаков нет. |
QTextStream::ForceSign |
0x4 |
Всегда отображать знак в числах, даже для положительных чисел. |
QTextStream::UppercaseBase |
0x8 |
Использовать заглавные версии префиксов основания ("0X", "0B"). |
QTextStream::UppercaseDigits |
0x10 |
Использовать заглавные буквы для выражения цифр от 10 до 35 вместо строчных. |
Тип NumberFlags — это псевдоним для QFlags<NumberFlag>. Он хранит комбинацию значений NumberFlag, объединенную по OR.
См. также setNumberFlags().
Перечисление QTextStream::RealNumberNotation
Это перечисление определяет, какие обозначения использовать для выражения float и double в виде строк.
| Постоянная | Значение | Описание |
|---|---|---|
QTextStream::ScientificNotation |
2 |
Научная запись (флаг printf()'s %e). |
QTextStream::FixedNotation |
1 |
Десятичная запись (флаг printf()'s %f). |
QTextStream::SmartNotation |
0 |
Научная или десятичная запись, в зависимости от того, какая наиболее подходит (флаг printf()'s %g). |
См. также setRealNumberNotation().
Перечисление QTextStream::Status
Это перечисление описывает текущее состояние потока текста.
| Постоянная | Значение | Описание |
|---|---|---|
QTextStream::Ok |
0 |
Поток текста работает нормально. |
QTextStream::ReadPastEnd |
1 |
Поток текста прочитал данные за пределами конца данных в базовом устройстве. |
QTextStream::ReadCorruptData |
2 |
Поток текста прочитал поврежденные данные. |
QTextStream::WriteFailed |
3 |
Поток текста не может записать в базовое устройство. |
См. также status().
Документация по функциям-членам
QTextStream::QTextStream(const QByteArray &array, QIODeviceBase::OpenMode openMode = ReadOnly)
Создаёт QTextStream, который работает с array, используя openMode для определения режима открытия. К массиву доступ осуществляется только для чтения, независимо от значений в openMode.
Этот конструктор удобен для работы с константными строками. Пример:
int main(int argc, char *argv[])
{
// read numeric arguments (123, 0x20, 4.5...)
for (int i = 1; i < argc; ++i) {
int number;
QTextStream in(argv[i]);
in >> number;
...
}
} QTextStream::QTextStream(QByteArray *array, QIODeviceBase::OpenMode openMode = ReadWrite)
Создаёт QTextStream, который работает с array, используя openMode для определения режима открытия. Внутри массив оборачивается с помощью QBuffer.
QTextStream::QTextStream(QString *string, QIODeviceBase::OpenMode openMode = ReadWrite)
Создаёт QTextStream, который работает со строкой string, используя openMode для определения режима открытия.
QTextStream::QTextStream(FILE *fileHandle, QIODeviceBase::OpenMode openMode = ReadWrite)
Создаёт QTextStream, который работает с fileHandle, используя openMode для определения режима открытия. Внутренне создаётся QFile для обработки указателя FILE.
Этот конструктор полезен для работы напрямую с общими потоками ввода-вывода, основанными на FILE: stdin, stdout и stderr. Пример:
QString str; QTextStream in(stdin); in >> str;
QTextStream::QTextStream(QIODevice *device)
Создаёт QTextStream, который работает с device.
QTextStream::QTextStream()
Создаёт QTextStream. Перед использованием для чтения или записи необходимо назначить устройство или строку.
См. также setDevice() и setString().
[virtual] QTextStream::~QTextStream()
Удаляет QTextStream.
Если поток работает с устройством, flush() будет вызван неявно. В противном случае устройство не затрагивается.
bool QTextStream::atEnd() const
Возвращает true , если больше нет данных для чтения из QTextStream; в противном случае возвращает false. Это аналогично, но не совпадает с вызовом QIODevice::atEnd(), так как QTextStream также учитывает свой внутренний буфер Unicode.
bool QTextStream::autoDetectUnicode() const
Возвращает true , если автоматическое определение Unicode включено, в противном случае возвращает false. Автоматическое определение Unicode включено по умолчанию.
См. также setAutoDetectUnicode() и setEncoding().
QIODevice *QTextStream::device() const
Возвращает текущее устройство, связанное с QTextStream, или nullptr , если устройство не назначено.
См. также setDevice() и string().
QStringConverter::Encoding QTextStream::encoding() const
Возвращает кодировку, которая в настоящее время назначена потоку.
См. также setEncoding(), setAutoDetectUnicode() и locale().
QTextStream::FieldAlignment QTextStream::fieldAlignment() const
Возвращает текущее выравнивание поля.
См. также setFieldAlignment() и fieldWidth().
int QTextStream::fieldWidth() const
Возвращает текущую ширину поля.
См. также setFieldWidth().
void QTextStream::flush()
Очищает любые буферизованные данные, ожидающие записи в устройство.
Если QTextStream работает со строкой, эта функция ничего не делает.
bool QTextStream::generateByteOrderMark() const
Возвращает true , если QTextStream настроен на создание UTF BOM (Byte Order Mark) при использовании UTF-кодировки; в противном случае возвращает false. Генерация UTF BOM по умолчанию отключена.
См. также setGenerateByteOrderMark().
int QTextStream::integerBase() const
Возвращает текущую базу целых чисел. 0 означает, что база определяется при чтении, или 10 (десятичная) при генерации чисел.
См. также setIntegerBase(), QString::number() и numberFlags().
QLocale QTextStream::locale() const
Возвращает локаль для данного потока. Локаль по умолчанию — C.
См. также setLocale().
QTextStream::NumberFlags QTextStream::numberFlags() const
Возвращает текущие флаги чисел.
См. также setNumberFlags(), integerBase() и realNumberNotation().
QChar QTextStream::padChar() const
Возвращает текущий символ заполнения.
См. также setPadChar() и setFieldWidth().
qint64 QTextStream::pos() const
Возвращает позицию устройства, соответствующую текущей позиции потока, или -1, если произошла ошибка (например, если нет устройства или строки, или если произошла ошибка устройства).
Поскольку QTextStream буферизован, этой функции может потребоваться выполнить поиск в устройстве для восстановления допустимой позиции устройства. Эта операция может быть дорогостоящей, поэтому вам следует избегать вызова этой функции в узком цикле.
См. также seek().
QString QTextStream::read(qint64 maxlen)
Читает не более maxlen символов из потока и возвращает прочитанные данные в виде QString.
См. также readAll(), readLine() и QIODevice::read().
QString QTextStream::readAll()
Читает всё содержимое потока и возвращает его в виде QString. Избегайте этой функции при работе с большими файлами, так как она потребует значительного объёма памяти.
Вызов readLine() предпочтительнее, если вы не знаете, сколько данных доступно.
См. также readLine().
QString QTextStream::readLine(qint64 maxlen = 0)
Читает одну строку текста из потока и возвращает её в виде QString. Максимальная длина строки установлена в maxlen. Если поток содержит строки длиннее этого, то строки будут разделены после maxlen символов и возвращены частями.
Если maxlen равно 0, строки могут иметь любую длину.
Возвращаемая строка не содержит символов конца строки ("\n" или "\r\n"), поэтому вызов QString::trimmed() может быть не нужен.
Если поток достиг конца файла, readLine() вернёт пустую QString. Для строк или для устройств, поддерживающих это, можно явно проверить конец потока с помощью atEnd().
См. также readAll() и QIODevice::readLine().
[since 5.5] bool QTextStream::readLineInto(QString *line, qint64 maxlen = 0)
Читает одну строку текста из потока в line. Если line равен nullptr, прочитанная строка не сохраняется.
Максимальная длина строки установлена в maxlen. Если поток содержит строки длиннее этого, то строки будут разделены после maxlen символов и возвращены частями.
Если maxlen равно 0, строки могут иметь любую длину.
Полученная строка не содержит символов конца строки ("\n" или "\r\n"), поэтому вызов QString::trimmed() может быть не нужен.
Если line имеет достаточный объём для данных, которые собираются прочитать, эта функция, возможно, не будет нуждаться в выделении новой памяти. Из-за этого она может быть быстрее, чем readLine().
Возвращает false , если поток достиг конца файла или произошла ошибка; в противном случае возвращает true. Содержимое line до вызова игнорируется в любом случае.
Эта функция была добавлена в Qt 5.5.
См. также readAll() и QIODevice::readLine().
QTextStream::RealNumberNotation QTextStream::realNumberNotation() const
Возвращает текущую запись вещественного числа.
См. также setRealNumberNotation(), realNumberPrecision(), numberFlags() и integerBase().
int QTextStream::realNumberPrecision() const
Возвращает текущую точность вещественных чисел или количество знаков после запятой, которое QTextStream запишет при формировании вещественных чисел.
См. также setRealNumberPrecision(), setRealNumberNotation(), realNumberNotation(), numberFlags() и integerBase().
void QTextStream::reset()
Сбрасывает параметры форматирования QTextStream, возвращая его к исходному состоянию при создании. Устройство, строка и любые буферизованные данные остаются неизменными.
void QTextStream::resetStatus()
Сбрасывает состояние текстового потока.
См. также QTextStream::Status, status() и setStatus().
bool QTextStream::seek(qint64 pos)
Перемещает указатель на позицию pos в устройстве. Возвращает true при успехе; в противном случае возвращает false.
void QTextStream::setAutoDetectUnicode(bool enabled)
Если enabled имеет значение true, QTextStream попытается определить кодировку Unicode, просматривая данные потока, чтобы найти метку порядка байтов (BOM) UTF-8, UTF-16 или UTF-32. Если эта метка найдена, QTextStream заменит текущую кодировку на UTF-кодировку.
Эта функция может использоваться совместно с setEncoding(). Обычно кодировка устанавливается в UTF-8, а затем включается обнаружение UTF-16.
См. также autoDetectUnicode() и setEncoding().
void QTextStream::setDevice(QIODevice *device)
Устанавливает текущее устройство на device. Если устройство уже назначено, QTextStream вызовет flush() перед заменой старого устройства.
Примечание: Эта функция сбрасывает локаль на системную локаль ('C') и кодировку на системную кодировку, UTF-8.
См. также device() и setString().
void QTextStream::setEncoding(QStringConverter::Encoding encoding)
Устанавливает кодировку для этого потока на encoding. Кодировка используется для декодирования любых данных, считываемых из назначенного устройства, и для кодирования любых данных, которые записываются. По умолчанию используется QStringConverter::Utf8, и включено автоматическое обнаружение Unicode.
Если QTextStream работает со строкой, эта функция ничего не делает.
Предупреждение: Если вы вызываете эту функцию, когда текстовый поток считывает данные из открытого последовательного сокета, внутренний буфер может всё ещё содержать текст, декодированный с использованием старой кодировки.
См. также encoding(), setAutoDetectUnicode() и setLocale().
void QTextStream::setFieldAlignment(QTextStream::FieldAlignment mode)
Устанавливает выравнивание поля на mode. При совместном использовании с setFieldWidth() эта функция позволяет генерировать отформатированный вывод с выравниванием текста по левому, правому или центру.
См. также fieldAlignment() и setFieldWidth().
void QTextStream::setFieldWidth(int width)
Устанавливает текущую ширину поля на width. Если width равно 0 (по умолчанию), ширина поля равна длине сгенерированного текста.
Примечание: Ширина поля применяется ко всем элементам, добавленным в этот поток после вызова этой функции (например, она также заполняет endl). Это поведение отличается от подобных классов в STL, где ширина поля применяется только к следующему элементу.
См. также fieldWidth() и setPadChar().
void QTextStream::setGenerateByteOrderMark(bool generate)
Если generate имеет значение true и используется UTF-кодировка, QTextStream вставит BOM (метку порядка байтов) перед записью любых данных в устройство. Если generate имеет значение false, BOM не будет вставлен. Эта функция должна быть вызвана до записи любых данных. В противном случае она ничего не делает.
См. также generateByteOrderMark() и bom().
void QTextStream::setIntegerBase(int base)
Устанавливает основание целых чисел на base, как для чтения, так и для генерации чисел. base может быть 2 (двоичное), 8 (восьмеричное), 10 (десятичное) или 16 (шестнадцатеричное). Если base равно 0, QTextStream попытается определить основание, просмотрев данные в потоке. При генерации чисел QTextStream предполагает основание 10, если оно не установлено явно.
См. также integerBase(), QString::number() и setNumberFlags().
void QTextStream::setLocale(const QLocale &locale)
Устанавливает локаль для этого потока на locale. Указанная локаль используется для преобразования чисел в их строковые представления.
По умолчанию используется локаль 'C', которая является специальным случаем — разделитель групп тысяч не используется по соображениям обратной совместимости.
См. также locale().
void QTextStream::setNumberFlags(QTextStream::NumberFlags flags)
Устанавливает текущие флаги чисел на flags. flags — это набор флагов из перечисления NumberFlag и описывает параметры форматирования генерируемого кода (например, всегда ли нужно писать основание или знак числа).
См. также numberFlags(), setIntegerBase() и setRealNumberNotation().
void QTextStream::setPadChar(QChar ch)
Устанавливает символ заполнения на ch. Значение по умолчанию — ASCII-пробел (' '), или QChar(0x20). Этот символ используется для заполнения пробелов в полях при генерации текста.
Пример:
QString s;
QTextStream out(&s);
out.setFieldWidth(10);
out.setFieldAlignment(QTextStream::AlignCenter);
out.setPadChar('-');
out << "Qt" << "rocks!"; Строка s содержит:
----Qt------rocks!--
См. также padChar() и setFieldWidth().
void QTextStream::setRealNumberNotation(QTextStream::RealNumberNotation notation)
Устанавливает формат вещественных чисел на notation (SmartNotation, FixedNotation, ScientificNotation). При чтении и генерации чисел QTextStream использует это значение для определения форматирования вещественных чисел.
См. также realNumberNotation(), setRealNumberPrecision(), setNumberFlags() и setIntegerBase().
void QTextStream::setRealNumberPrecision(int precision)
Устанавливает точность вещественных чисел на precision. Это значение определяет количество знаков после запятой, которое QTextStream должен записать при генерации вещественных чисел.
Точность не может быть отрицательной. Значение по умолчанию — 6.
См. также realNumberPrecision() и setRealNumberNotation().
void QTextStream::setStatus(QTextStream::Status status)
Устанавливает состояние текстового потока на заданное status.
Последующие вызовы setStatus() игнорируются до тех пор, пока не будет вызван resetStatus().
См. также Status, status() и resetStatus().
void QTextStream::setString(QString *string, QIODeviceBase::OpenMode openMode = ReadWrite)
Устанавливает текущую строку на string, используя заданный openMode. Если устройство уже назначено, QTextStream вызовет flush() перед заменой.
См. также string() и setDevice().
void QTextStream::skipWhiteSpace()
Читает и отбрасывает пробелы из потока, пока не будет обнаружен не-пробельный символ или пока atEnd() не вернёт true. Эта функция полезна при чтении потока посимвольно.
Пробельные символы — это все символы, для которых QChar::isSpace() возвращает true.
См. также operator>>().
QTextStream::Status QTextStream::status() const
Возвращает состояние текстового потока.
См. также QTextStream::Status, setStatus() и resetStatus().
QString *QTextStream::string() const
Возвращает текущую строку, присвоенную QTextStream, или nullptr если строка не была присвоена.
См. также setString() и device().
QTextStream &QTextStream::operator<<(QChar c)
Записывает символ c в поток, затем возвращает ссылку на QTextStream.
См. также setFieldWidth().
QTextStream &QTextStream::operator<<(char c)
Это перегруженная функция.
Преобразует c из ASCII в QChar, затем записывает его в поток.
QTextStream &QTextStream::operator<<(short i)
Записывает целое число i в поток, затем возвращает ссылку на QTextStream. По умолчанию число хранится в десятичной форме, но вы также можете установить основание, вызвав setIntegerBase().
См. также setFieldWidth() и setNumberFlags().
QTextStream &QTextStream::operator<<(unsigned short i)
Это перегруженная функция.
Записывает беззнаковое короткое целое i в поток.
QTextStream &QTextStream::operator<<(int i)
Это перегруженная функция.
Записывает целое число со знаком i в поток.
QTextStream &QTextStream::operator<<(unsigned int i)
Это перегруженная функция.
Записывает беззнаковое целое число i в поток.
QTextStream &QTextStream::operator<<(long i)
Это перегруженная функция.
Записывает целое число со знаком i в поток.
QTextStream &QTextStream::operator<<(unsigned long i)
Это перегруженная функция.
Записывает беззнаковое длинное целое i в поток.
QTextStream &QTextStream::operator<<(qlonglong i)
Это перегруженная функция.
Записывает значение i типа qlonglong в поток.
QTextStream &QTextStream::operator<<(qulonglong i)
Это перегруженная функция.
Записывает значение i типа qulonglong в поток.
QTextStream &QTextStream::operator<<(float f)
Записывает вещественное число f в поток, затем возвращает ссылку на QTextStream. По умолчанию QTextStream использует формат SmartNotation с точностью до 6 знаков. Вы можете изменить формат представления вещественных чисел в QTextStream, вызвав setRealNumberNotation(), setRealNumberPrecision() и setNumberFlags().
См. также setFieldWidth(), setRealNumberNotation(), setRealNumberPrecision() и setNumberFlags().
QTextStream &QTextStream::operator<<(double f)
Это перегруженная функция.
Записывает значение f типа double в поток.
QString &QTextStream::operator<<(const QString &string)
Записывает строку string в поток и возвращает ссылку на QTextStream. Сначала строка кодируется с помощью заданной кодировки (по умолчанию UTF-8) перед записью в поток.
См. также setFieldWidth() и setEncoding().
[since 5.12] QTextStream &QTextStream::operator<<(QStringView string)
Это перегруженная функция.
Записывает string в поток и возвращает ссылку на QTextStream.
Функция была добавлена в Qt 5.12.
QTextStream &QTextStream::operator<<(QLatin1String string)
Это перегруженная функция.
Записывает string в поток и возвращает ссылку на QTextStream.
QTextStream &QTextStream::operator<<(const QByteArray &array)
Это перегруженная функция.
Записывает array в поток. Содержимое array преобразуется с помощью QString::fromUtf8().
QTextStream &QTextStream::operator<<(const char *string)
Это перегруженная функция.
Записывает строку, на которую указывает string, в поток. Предполагается, что string закодирован в UTF-8. Этот оператор удобен при работе с постоянными строковыми данными. Пример:
QTextStream out(stdout); out << "Qt rocks!" << Qt::endl;
Предупреждение: QTextStream предполагает, что string указывает на строку текста, завершенную символом '\0'. Если нет завершающего символа '\0', ваше приложение может аварийно завершиться.
QTextStream &QTextStream::operator<<(const void *ptr)
Это перегруженная функция.
Записывает ptr в поток как шестнадцатеричное число с основанием.
QTextStream &QTextStream::operator>>(QChar &c)
Читает символ из потока и сохраняет его в c. Возвращает ссылку на QTextStream, поэтому несколько операторов могут быть вложены. Пример:
QTextStream in(file); QChar ch1, ch2, ch3; in >> ch1 >> ch2 >> ch3;
Пробелы не пропускаются.
QTextStream &QTextStream::operator>>(char &c)
Это перегруженная функция.
Читает символ из потока и сохраняет его в c. Символ из потока преобразуется в ISO-5589-1 перед сохранением.
См. также QChar::toLatin1().
QTextStream &QTextStream::operator>>(short &i)
Читает целое число из потока и сохраняет его в i, затем возвращает ссылку на QTextStream. Число приводится к правильному типу перед сохранением. Если в потоке не было обнаружено числа, i устанавливается в 0.
По умолчанию QTextStream пытается определить основание числа по следующим правилам:
| Префикс | Основание |
|---|---|
| "0b" или "0B" | 2 (двоичное) |
| "0" за которым следуют "0-7" | 8 (восьмеричное) |
| "0" в противном случае | 10 (десятичное) |
| "0x" или "0X" | 16 (шестнадцатеричное) |
| "1" до "9" | 10 (десятичное) |
Вы можете явно указать основание целого числа, вызвав setIntegerBase(). Это отключит автоматическое определение и немного ускорит QTextStream.
Ведущие пробелы пропускаются.
QTextStream &QTextStream::operator>>(unsigned short &i)
Это перегруженный функционал.
Сохраняет целое число в беззнаковом коротком целом i.
QTextStream &QTextStream::operator>>(int &i)
Это перегруженный функционал.
Сохраняет целое число в знаковом целом i.
QTextStream &QTextStream::operator>>(unsigned int &i)
Это перегруженный функционал.
Сохраняет целое число в беззнаковом целом i.
QTextStream &QTextStream::operator>>(long &i)
Это перегруженный функционал.
Сохраняет целое число в знаковом длинном целом i.
QTextStream &QTextStream::operator>>(unsigned long &i)
Это перегруженный функционал.
Сохраняет целое число в беззнаковом длинном целом i.
QTextStream &QTextStream::operator>>(qlonglong &i)
Это перегруженный функционал.
Сохраняет целое число в qlonglong i.
QTextStream &QTextStream::operator>>(qulonglong &i)
Это перегруженный функционал.
Сохраняет целое число в qulonglong i.
QTextStream &QTextStream::operator>>(float &f)
Считывает вещественное число из потока и сохраняет его в f, затем возвращает ссылку на QTextStream. Число приводится к соответствующему типу. Если в потоке нет вещественного числа, f устанавливается в 0,0.
В качестве исключения, QTextStream допускает строки "nan" и "inf" для представления чисел с плавающей точкой NAN и INF или double.
Пробелы в начале пропускаются.
QTextStream &QTextStream::operator>>(double &f)
Это перегруженный функционал.
Сохраняет вещественное число в double f.
QTextStream &QTextStream::operator>>(QString &str)
Считывает слово из потока и сохраняет его в str, затем возвращает ссылку на поток. Слова разделяются пробелами (т.е. все символы, для которых QChar::isSpace() возвращает true).
Пробелы в начале пропускаются.
QTextStream &QTextStream::operator>>(QByteArray &array)
Это перегруженный функционал.
Преобразует слово в UTF-8, затем сохраняет его в array.
См. также QString::toLatin1().
QTextStream &QTextStream::operator>>(char *c)
Это перегруженный функционал.
Преобразует слово в UTF-8 и сохраняет его в c, завершая нулем '\0'. Если слово недоступно, сохраняется только '\0'.
Предупреждение: Хотя удобно, этот оператор опасен и его необходимо использовать с осторожностью. QTextStream предполагает, что c указывает на буфер с достаточным пространством для хранения слова. Если буфер слишком мал, ваше приложение может зависнуть. Для слова, состоящего из n QChars, буфер должен быть длиной не менее 3*n+1 символов.
Если возможно, используйте оператор QByteArray вместо этого.
Связанные нечлены
QTextStreamManipulator qSetFieldWidth(int width)
Эквивалентно QTextStream::setFieldWidth(width).
QTextStreamManipulator qSetPadChar(QChar ch)
Эквивалентно QTextStream::setPadChar(ch).
QTextStreamManipulator qSetRealNumberPrecision(int precision)
Эквивалентно QTextStream::setRealNumberPrecision(precision).
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qtextstream.html