Spec-Zone.ru › Qt 6.0

Класс QTextStream

Класс QTextStream предоставляет удобный интерфейс для чтения и записи текста. Подробнее...

Заголовок: #include <QTextStream>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Наследует: QIODeviceBase
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются повторно входящими.

Открытые типы

Перечисление ВыравниваниеПоля { AlignLeft, AlignRight, AlignCenter, AlignAccountingStyle }
Перечисление ФлагЧисла { ShowBase, ForcePoint, ForceSign, UppercaseBase, UppercaseDigits }
Флаги ФлагиЧисел
Перечисление ФорматВещественногоЧисла { ScientificNotation, FixedNotation, SmartNotation }
Перечисление Статус { Ok, ReadPastEnd, ReadCorruptData, WriteFailed }

Открытые функции

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)
END_OF_DOCUMENT_MARKER
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::bin То же, что и setIntegerBase(2).
Qt::oct То же, что и setIntegerBase(8).
Qt::dec То же, что и setIntegerBase(10).
Qt::hex То же, что и setIntegerBase(16).
Qt::showbase То же, что и setNumberFlags(numberFlags() | ShowBase).
Qt::forcesign То же, что и setNumberFlags(numberFlags() | ForceSign).
Qt::forcepoint То же, что и setNumberFlags(numberFlags() | ForcePoint).
Qt::noshowbase То же, что и setNumberFlags(numberFlags() & ~ShowBase).
Qt::noforcesign То же, что и setNumberFlags(numberFlags() & ~ForceSign).
Qt::noforcepoint То же, что и setNumberFlags(numberFlags() & ~ForcePoint).
Qt::uppercasebase То же, что и setNumberFlags(numberFlags() | UppercaseBase).
Qt::uppercasedigits То же, что и setNumberFlags(numberFlags() | UppercaseDigits).
Qt::lowercasebase То же, что и setNumberFlags(numberFlags() & ~UppercaseBase).
Qt::lowercasedigits То же, что и setNumberFlags(numberFlags() & ~UppercaseDigits).
Qt::fixed То же, что и setRealNumberNotation(FixedNotation).
Qt::scientific То же, что и setRealNumberNotation(ScientificNotation).
Qt::left То же, что и setFieldAlignment(AlignLeft).
Qt::right То же, что и setFieldAlignment(AlignRight).
Qt::center То же, что и setFieldAlignment(AlignCenter).
Qt::endl То же, что и operator<<('\n') и flush().
Qt::flush То же, что и flush().
Qt::reset То же, что и reset().
Qt::ws То же, что и skipWhiteSpace().
Qt::bom То же, что и setGenerateByteOrderMark(true).

Кроме того, 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 для определения режима открытия. Внутри, для обработки указателя FILE создаётся QFile.

Этот конструктор полезен для работы напрямую с типичными потоками ввода-вывода, основанными на 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 знаков. Вы можете изменить формат представления вещественных чисел, используя 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 символов QChar, буфер должен быть не менее 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.0/qtextstream.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API