Spec-Zone.ru › Qt 5.13

Класс QTextStream

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

Заголовок: #include <QTextStream>
qmake: QT += core
  • Список всех членов, включая унаследованные

Примечание: Все функции этого класса являются реентерабельными.

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

Перечисление ВыравниваниеПоля { ВыравниваниеСлева, ВыравниваниеСправа, ВыравниваниеПоЦентру, ВыравниваниеПоБухгалтерскомуСтилю }
Перечисление ФлагЧисла { ПоказатьОснование, ВынужденнаяДесятичнаяТочка, ВынужденныйЗнак, ОснованиеВВерхнемРегистре, ЦифрыВВерхнемРегистре }
Флаги ФлагиЧисел
Перечисление ФорматДействительногоЧисла { ЭкспоненциальнаяФорма, ФорматФиксированнойТочки, УмныйФормат }
Перечисление Статус { ОК, ЧтениеЗаКонцом, ЧтениеНекорректныхДанных, ОшибкаЗаписи }

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

QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly)
QTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
QTextStream(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
QTextStream(QIODevice *device)
QTextStream()
virtual ~QTextStream()
bool atEnd() const
bool autoDetectUnicode() const
QTextCodec * codec() const
QIODevice * device() 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 setCodec(QTextCodec *codec)
void setCodec(const char *codecName)
void setDevice(QIODevice *device)
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, QIODevice::OpenMode openMode = QIODevice::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 QStringRef &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)

Связанные нечленные функции

QTextStream & bin(QTextStream &stream)
QTextStream & bom(QTextStream &stream)
QTextStream & center(QTextStream &stream)
QTextStream & dec(QTextStream &stream)
QTextStream & endl(QTextStream &stream)
QTextStream & fixed(QTextStream &stream)
QTextStream & flush(QTextStream &stream)
QTextStream & forcepoint(QTextStream &stream)
QTextStream & forcesign(QTextStream &stream)
QTextStream & hex(QTextStream &stream)
QTextStream & left(QTextStream &stream)
QTextStream & lowercasebase(QTextStream &stream)
QTextStream & lowercasedigits(QTextStream &stream)
QTextStream & noforcepoint(QTextStream &stream)
QTextStream & noforcesign(QTextStream &stream)
QTextStream & noshowbase(QTextStream &stream)
QTextStream & oct(QTextStream &stream)
QTextStreamManipulator qSetFieldWidth(int width)
QTextStreamManipulator qSetPadChar(QChar ch)
QTextStreamManipulator qSetRealNumberPrecision(int precision)
QTextStream & reset(QTextStream &stream)
QTextStream & right(QTextStream &stream)
QTextStream & scientific(QTextStream &stream)
QTextStream & showbase(QTextStream &stream)
QTextStream & uppercasebase(QTextStream &stream)
QTextStream & uppercasedigits(QTextStream &stream)
QTextStream & ws(QTextStream &stream)

Подробное описание

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 использует буфер на основе Юникода, а QTextCodec используется QTextStream для автоматической поддержки различных кодировок символов. По умолчанию, QTextCodec::codecForLocale() используется для чтения и записи, но вы также можете установить кодировку, вызвав setCodec(). Также поддерживается автоматическое определение Юникода. Когда эта функция включена (по умолчанию), QTextStream будет определять BOM (Byte Order Mark) 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 также определяет несколько глобальных функций-манипуляторов:

Manipulator Описание
bin То же, что и setIntegerBase(2).
oct То же, что и setIntegerBase(8).
dec То же, что и setIntegerBase(10).
hex То же, что и setIntegerBase(16).
showbase То же, что и setNumberFlags(numberFlags() | ShowBase).
forcesign То же, что и setNumberFlags(numberFlags() | ForceSign).
forcepoint То же, что и setNumberFlags(numberFlags() | ForcePoint).
noshowbase То же, что и setNumberFlags(numberFlags() & ~ShowBase).
noforcesign То же, что и setNumberFlags(numberFlags() & ~ForceSign).
noforcepoint То же, что и setNumberFlags(numberFlags() & ~ForcePoint).
uppercasebase То же, что и setNumberFlags(numberFlags() | UppercaseBase).
uppercasedigits То же, что и setNumberFlags(numberFlags() | UppercaseDigits).
lowercasebase То же, что и setNumberFlags(numberFlags() & ~UppercaseBase).
lowercasedigits То же, что и setNumberFlags(numberFlags() & ~UppercaseDigits).
fixed То же, что и setRealNumberNotation(FixedNotation).
scientific То же, что и setRealNumberNotation(ScientificNotation).
left То же, что и setFieldAlignment(AlignLeft).
right То же, что и setFieldAlignment(AlignRight).
center То же, что и setFieldAlignment(AlignCenter).
endl То же, что и operator<<('\n') и flush().
flush То же, что и flush().
reset То же, что и reset().
ws То же, что и skipWhiteSpace().
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, объединённую операцией «ИЛИ».

См. также setNumberFlags().

enum QTextStream::RealNumberNotation

Этот перечисление определяет, какие обозначения использовать для представления float и double в виде строк.

Постоянная Значение Описание
QTextStream::ScientificNotation 2 Научная запись (флаг printf()'s %e).
QTextStream::FixedNotation 1 Запись с фиксированной точкой (флаг printf()'s %f).
QTextStream::SmartNotation 0 Научная или запись с фиксированной точкой, в зависимости от того, какая из них наиболее подходит (флаг printf()'s %g).

См. также setRealNumberNotation().

enum QTextStream::Status

Это перечисление описывает текущий статус потока текста.

Постоянная Значение Описание
QTextStream::Ok 0 Поток текста работает нормально.
QTextStream::ReadPastEnd 1 Поток текста прочитал данные до конца в базовом устройстве.
QTextStream::ReadCorruptData 2 Поток текста прочитал повреждённые данные.
QTextStream::WriteFailed 3 Поток текста не может записать в базовое устройство.

См. также status().

Документация по функциям-членам

QTextStream::QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::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, QIODevice::OpenMode openMode = QIODevice::ReadWrite)

Создаёт объект QTextStream, который работает с array, используя openMode для определения режима открытия. Внутри массив оборачивается объектом QBuffer.

QTextStream::QTextStream(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite)

Создаёт объект QTextStream, который работает с string, используя openMode для определения режима открытия.

QTextStream::QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::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(), setCodec() и QTextCodec::codecForUtfText().

QTextCodec *QTextStream::codec() const

Возвращает кодек, текущий назначенный потоку.

См. также setCodec(), setAutoDetectUnicode() и locale().

QIODevice *QTextStream::device() const

Возвращает текущее устройство, связанное с QTextStream, или nullptr если устройство не присвоено.

См. также setDevice() и string().

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.

Функция была добавлена в Qt 4.5.

См. также setLocale().

QTextStream::NumberFlags QTextStream::numberFlags() const

Возвращает текущие флаги чисел.

См. также setNumberFlags(), integerBase() и realNumberNotation().

QChar QTextStream::padChar() const

Возвращает текущий символ заполнения.

См. также setPadChar() и setFieldWidth().

qint64 QTextStream::pos() const

Возвращает позицию устройства, соответствующую текущей позиции потока, или -1, если произошла ошибка (например, если нет устройства или строки, или есть ошибка устройства).

Так как QTextStream буферизован, этой функции может потребоваться выполнить поиск в устройстве для восстановления корректной позиции устройства. Эта операция может быть дорогостоящей, поэтому следует избегать вызова этой функции в узком цикле.

Эта функция была представлена в Qt 4.2.

См. также seek().

QString QTextStream::read(qint64 maxlen)

Считывает не более maxlen символов из потока и возвращает прочитанные данные как QString.

Эта функция была представлена в Qt 4.1.

См. также 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().

bool QTextStream::readLineInto(QString *line, qint64 maxlen = 0)

Считывает одну строку текста из потока в line. Если line равен 0, прочитанная строка не сохраняется.

Максимальная длина строки задаётся значением 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()

Сбрасывает состояние текстового потока.

Эта функция была представлена в Qt 4.1.

См. также QTextStream::Status, status() и setStatus().

bool QTextStream::seek(qint64 pos)

Перемещает указатель на позицию pos в устройстве. Возвращает true при успехе; в противном случае возвращает false.

void QTextStream::setAutoDetectUnicode(bool enabled)

Если enabled истинно, QTextStream попытается определить кодировку Юникод, заглянув в данные потока, чтобы увидеть, может ли он найти метку порядка байтов (BOM) UTF-8, UTF-16 или UTF-32. Если эта метка найдена, QTextStream заменит текущий кодек на UTF-кодек.

Эта функция может использоваться вместе с setCodec(). Обычно кодек устанавливается в UTF-8, а затем включается обнаружение UTF-16.

См. также autoDetectUnicode(), setCodec() и QTextCodec::codecForUtfText().

void QTextStream::setCodec(QTextCodec *codec)

Устанавливает кодек для этого потока на codec. Кодек используется для декодирования любых данных, считываемых с назначенного устройства, и для кодирования любых данных, записываемых. По умолчанию используется QTextCodec::codecForLocale(), и включено автоматическое обнаружение Юникода.

Если QTextStream работает со строкой, эта функция ничего не делает.

Предупреждение: Если вы вызываете эту функцию, когда текстовый поток считывает данные из открытого последовательного сокета, внутренний буфер может всё ещё содержать текст, декодированный с помощью старого кодека.

См. также codec(), setAutoDetectUnicode() и setLocale().

void QTextStream::setCodec(const char *codecName)

Устанавливает кодек для этого потока на QTextCodec для кодировки, заданной codecName. Распространённые значения для codecName включают "ISO 8859-1", "UTF-8" и "UTF-16". Если кодировка не распознаётся, ничего не происходит.

Пример:

QTextStream out(&file);
out.setCodec("UTF-8");

См. также QTextCodec::codecForName() и setLocale().

void QTextStream::setDevice(QIODevice *device)

Устанавливает текущее устройство на device. Если устройству уже присвоено значение, QTextStream вызовет flush() перед заменой старого устройства.

Примечание: Эта функция сбрасывает локаль до локальной по умолчанию ('C') и кодек до кодека по умолчанию, QTextCodec::codecForLocale().

См. также device() и setString().

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 истинно и используется UTF-кодек, QTextStream вставит BOM (метка порядка байтов) перед записью любых данных в устройство. Если generate ложно, 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, и это особый случай — разделитель тысяч не используется по соображениям обратной совместимости.

Эта функция была добавлена в Qt 4.5.

См. также 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().

Эта функция была добавлена в Qt 4.1.

См. также Status, status() и resetStatus().

void QTextStream::setString(QString *string, QIODevice::OpenMode openMode = QIODevice::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 в поток.

QTextStream &QTextStream::operator<<(qulonglong i)

Это перегруженная функция.

Записывает i в поток.

QTextStream &QTextStream::operator<<(float f)

Записывает вещественное число f в поток, а затем возвращает ссылку на QTextStream. По умолчанию QTextStream сохраняет его с использованием SmartNotation с точностью до 6 знаков. Вы можете изменить текстовое представление, которое QTextStream будет использовать для вещественных чисел, вызвав setRealNumberNotation(), setRealNumberPrecision() и setNumberFlags().

См. также setFieldWidth(), setRealNumberNotation(), setRealNumberPrecision() и setNumberFlags().

QTextStream &QTextStream::operator<<(double f)

Это перегруженный метод.

Записывает двойное значение f в поток.

QTextStream &QTextStream::operator<<(const QString &string)

Записывает строку string в поток и возвращает ссылку на QTextStream. Сначала строка кодируется с помощью заданного кодека (по умолчанию используется QTextCodec::codecForLocale()), а затем записывается в поток.

См. также setFieldWidth() и setCodec().

QTextStream &QTextStream::operator<<(QStringView string)

Это перегруженный метод.

Записывает string в поток и возвращает ссылку на QTextStream.

Этот метод был добавлен в Qt 5.12.

QTextStream &QTextStream::operator<<(QLatin1String string)

Это перегруженный метод.

Записывает string в поток и возвращает ссылку на QTextStream.

QTextStream &QTextStream::operator<<(const QStringRef &string)

Это перегруженный метод.

Записывает string в поток и возвращает ссылку на QTextStream.

Этот метод был добавлен в Qt 5.6.

QTextStream &QTextStream::operator<<(const QByteArray &array)

Это перегруженный метод.

Записывает array в поток. Содержимое array преобразуется с помощью QString::fromUtf8().

QTextStream &QTextStream::operator<<(const char *string)

Это перегруженный метод.

Записывает константную строку, на которую указывает string, в поток. Предполагается, что string закодирован в ISO-8859-1. Этот оператор удобен при работе с константными строковыми данными. Пример:

QTextStream out(stdout);
out << "Qt rocks!" << 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)

Это перегруженный метод.

Сохраняет целое число в беззнаковом short i.

QTextStream &QTextStream::operator>>(int &i)

Это перегруженный метод.

Сохраняет целое число в знаковом int i.

QTextStream &QTextStream::operator>>(unsigned int &i)

Это перегруженный метод.

Сохраняет целое число в беззнаковом int i.

QTextStream &QTextStream::operator>>(long &i)

Это перегруженный метод.

Сохраняет целое число в знакомом long i.

QTextStream &QTextStream::operator>>(unsigned long &i)

Это перегруженный метод.

Сохраняет целое число в беззнаковом long 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 для float или double.

Пробелы в начале пропускаются.

QTextStream &QTextStream::operator>>(double &f)

Это перегруженный метод.

Сохраняет вещественное число в double f.

QTextStream &QTextStream::operator>>(QString &str)

Читает слово из потока и сохраняет его в str, затем возвращает ссылку на поток. Слова разделяются пробелами (т.е., все символы, для которых QChar::isSpace() возвращает true).

Пробелы в начале пропускаются.

QTextStream &QTextStream::operator>>(QByteArray &array)

Это перегруженный метод.

Преобразует слово в ISO-8859-1 и сохраняет его в array.

См. также QString::toLatin1().

QTextStream &QTextStream::operator>>(char *c)

Это перегруженный метод.

Сохраняет слово в c, завершая его символом '\0'. Если слово недоступно, сохраняется только '\0'.

Предупреждение: Хотя удобно, этот оператор опасен и требует осторожности. QTextStream предполагает, что c указывает на буфер, достаточно большой для хранения слова. Если буфер слишком мал, ваше приложение может аварийно завершиться.

Если возможно, используйте оператор QByteArray вместо него.

Связанные не члены

QTextStream &QTextStream::bin(QTextStream &stream)

Вызывает QTextStream::setIntegerBase(2) для stream и возвращает stream.

См. также oct(), dec(), hex() и манипуляторы QTextStream.

QTextStream &QTextStream::bom(QTextStream &stream)

Переключает вставку метки порядка байтов в stream, когда QTextStream используется с кодеком UTF.

См. также QTextStream::setGenerateByteOrderMark() и манипуляторы QTextStream.

QTextStream &QTextStream::center(QTextStream &stream)

Вызывает QTextStream::setFieldAlignment(QTextStream::AlignCenter) для stream и возвращает stream.

См. также left(), right() и манипуляторы QTextStream.

QTextStream &QTextStream::dec(QTextStream &stream)

Вызывает QTextStream::setIntegerBase(10) для stream и возвращает stream.

См. также bin(), oct(), hex() и манипуляторы QTextStream.

QTextStream &QTextStream::endl(QTextStream &stream)

Записывает '\n' в stream и сбрасывает буфер потока.

Эквивалентно

stream << '\n' << flush;

Примечание: В Windows все символы '\n' записываются как '\r\n', если устройство или строка QTextStream открыты с флагом QIODevice::Text.

См. также flush(), reset() и манипуляторы QTextStream.

QTextStream &QTextStream::fixed(QTextStream &stream)

Вызывает QTextStream::setRealNumberNotation(QTextStream::FixedNotation) для stream и возвращает stream.

См. также scientific() и манипуляторы QTextStream.

QTextStream &QTextStream::flush(QTextStream &stream)

Вызывает QTextStream::flush() для stream и возвращает stream.

См. также endl(), reset() и манипуляторы QTextStream.

QTextStream &QTextStream::forcepoint(QTextStream &stream)

Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() | QTextStream::ForcePoint) для stream и возвращает stream.

См. также noforcepoint(), forcesign(), showbase() и манипуляторы QTextStream.

QTextStream &QTextStream::forcesign(QTextStream &stream)

Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() | QTextStream::ForceSign) для stream и возвращает stream.

См. также noforcesign(), forcepoint(), showbase() и манипуляторы QTextStream.

QTextStream &QTextStream::hex(QTextStream &stream)

Вызывает QTextStream::setIntegerBase(16) для stream и возвращает stream.

Примечание: Модификатор hex может быть использован только для записи в потоки.

См. также bin(), oct(), dec() и манипуляторы QTextStream.

QTextStream &QTextStream::left(QTextStream &stream)

Вызывает QTextStream::setFieldAlignment(QTextStream::AlignLeft) для stream и возвращает stream.

См. также right(), center() и манипуляторы QTextStream.

QTextStream &QTextStream::lowercasebase(QTextStream &stream)

Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() & ~QTextStream::UppercaseBase) для stream и возвращает stream.

См. также uppercasebase(), lowercasedigits() и манипуляторы QTextStream.

QTextStream &QTextStream::lowercasedigits(QTextStream &stream)

Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() & ~QTextStream::UppercaseDigits) для stream и возвращает stream.

См. также uppercasedigits(), lowercasebase() и манипуляторы QTextStream.

QTextStream &QTextStream::noforcepoint(QTextStream &stream)

Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() & ~QTextStream::ForcePoint) для stream и возвращает stream.

См. также forcepoint(), noforcesign(), noshowbase() и манипуляторы QTextStream.

QTextStream &QTextStream::noforcesign(QTextStream &stream)

Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() & ~QTextStream::ForceSign) для stream и возвращает stream.

См. также forcesign(), noforcepoint(), noshowbase() и манипуляторы QTextStream.

QTextStream &QTextStream::noshowbase(QTextStream &stream)

Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() & ~QTextStream::ShowBase) для stream и возвращает stream.

См. также showbase(), noforcesign(), noforcepoint() и манипуляторы QTextStream.

QTextStream &QTextStream::oct(QTextStream &stream)

Вызывает QTextStream::setIntegerBase(8) для stream и возвращает stream.

См. также bin(), dec(), hex() и манипуляторы QTextStream.

QTextStreamManipulator QTextStream::qSetFieldWidth(int width)

Эквивалентно QTextStream::setFieldWidth(width).

QTextStreamManipulator QTextStream::qSetPadChar(QChar ch)

Эквивалентно QTextStream::setPadChar(ch).

QTextStreamManipulator QTextStream::qSetRealNumberPrecision(int precision)

Эквивалентно QTextStream::setRealNumberPrecision(precision).

QTextStream &QTextStream::reset(QTextStream &stream)

Вызывает QTextStream::reset() для stream и возвращает stream.

См. также flush() и манипуляторы QTextStream.

QTextStream &QTextStream::right(QTextStream &stream)

Вызывает QTextStream::setFieldAlignment(QTextStream::AlignRight) для stream и возвращает stream.

См. также left(), center() и манипуляторы QTextStream.

QTextStream &QTextStream::scientific(QTextStream &stream)

Вызывает QTextStream::setRealNumberNotation(QTextStream::ScientificNotation) для stream и возвращает stream.

См. также fixed() и манипуляторы QTextStream.

QTextStream &QTextStream::showbase(QTextStream &stream)

Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() | QTextStream::ShowBase) для stream и возвращает stream.

См. также noshowbase(), forcesign(), forcepoint() и манипуляторы QTextStream.

QTextStream &QTextStream::uppercasebase(QTextStream &stream)

Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() | QTextStream::UppercaseBase) для stream и возвращает stream.

См. также lowercasebase(), uppercasedigits() и манипуляторы QTextStream.

QTextStream &QTextStream::uppercasedigits(QTextStream &stream)

Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() | QTextStream::UppercaseDigits) для stream и возвращает stream.

См. также lowercasedigits(), uppercasebase() и манипуляторы QTextStream.

QTextStream &QTextStream::ws(QTextStream &stream)

Вызывает skipWhiteSpace() для stream и возвращает stream.

См. также манипуляторы QTextStream.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qtextstream.html

Spec-Zone.ru

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