Spec-Zone.ru › Qt 5.15

Класс 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 конецПотока() const
bool автоОпределятьЮникод() const
QTextCodec * кодек() const
QIODevice * устройство() const
QTextStream::FieldAlignment выравниваниеПолей() const
int ширинаПолей() const
void сброситьБуфер()
bool генерироватьМаркерПорядкаБайтов() const
int основаниеЦелыхЧисел() const
QLocale языковаяЛокализация() const
QTextStream::NumberFlags флагиЧисел() const
QChar символЗаполнения() const
qint64 позиция() const
QString читать(qint64 maxlen)
QString прочитатьВсё()
QString прочитатьСтроку(qint64 maxlen = 0)
bool прочитатьСтрокуВ(QString *line, qint64 maxlen = 0)
QTextStream::RealNumberNotation формаЧиселСПлавующейТочкой() const
int точностьЧиселСПлавующейТочкой() const
void сбросить()
void сброситьСостояние()
bool перейтиК(qint64 pos)
void установитьАвтоОпределятьЮникод(bool enabled)
void установитьКодек(QTextCodec *codec)
void установитьКодек(const char *codecName)
void установитьУстройство(QIODevice *device)
void установитьВыравниваниеПолей(QTextStream::FieldAlignment mode)
void установитьШиринаПолей(int width)
void установитьГенерироватьМаркерПорядкаБайтов(bool generate)
void установитьОснованиеЦелыхЧисел(int base)
void установитьЯзыковаяЛокализация(const QLocale &locale)
void установитьФлагиЧисел(QTextStream::NumberFlags flags)
void установитьСимволЗаполнения(QChar ch)
void установитьФорматЧиселСПлавующейТочкой(QTextStream::RealNumberNotation notation)
void установитьТочностьЧиселСПлавующейТочкой(int precision)
void установитьСостояние(QTextStream::Status status)
void установитьСтроку(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
void пропуститьПробелы()
QTextStream::Status состояние() const
QString * строка() 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)

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

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

Манипулятор Описание
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

Это перечисление определяет, как выравнивать текст в полях, когда поле шире, чем текст, который его занимает.

Постоянная Значение Описание
AlignRight 0 Выравнивание по правому краю полей.
AlignLeft 1 Выравнивание по левому краю полей.
AlignCenter 2 Выравнивание по центру полей.
AlignRight 3 То же, что и AlignRight, за исключением того, что знак числа выравнивается по левому краю.

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

перечисление QTextStream::NumberFlagфлаги QTextStream::NumberFlags

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

Постоянная Значение Описание
ShowBase 1 Отображать основание как префикс, если основание равно 16 ("0x"), 8 ("0") или 2 ("0b").
ForcePoint 2 Всегда вставлять десятичный разделитель в числа, даже если нет десятичных знаков.
ForceSign 4 Всегда вставлять знак в числа, даже для положительных чисел.
UppercaseBase 8 Использовать заглавные буквы для префиксов основания ("0X", "0B").
UppercaseDigits 16 Использовать заглавные буквы для представления цифр от 10 до 35 вместо строчных.

Тип NumberFlags — это псевдоним для QFlags<NumberFlag>. Он хранит сочетание значений NumberFlag с помощью операции OR.

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

перечисление QTextStream::RealNumberNotation

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

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

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

перечисление QTextStream::Status

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

Постоянная Значение Описание
Ok 0 Поток текста работает нормально.
EndOfDevice 1 Поток текста прочитал данные до конца в базовом устройстве.
CorruptedData 2 Поток текста прочитал поврежденные данные.
WriteError 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 для определения режима открытия. Внутри для обработки указателя FILE создаётся QFile.

Этот конструктор полезен для работы непосредственно с обычными потоками ввода-вывода, основанными на файлах: 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 также учитывает свой внутренний буфер Юникода.

bool QTextStream::autoDetectUnicode() const

Возвращает true, если автоматическое обнаружение Юникода включено, в противном случае возвращает false. Автоматическое обнаружение Юникода включено по умолчанию.

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

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

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

См. также 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-кодировку.

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

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

void QTextStream::setCodec(QTextCodec *codec)

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

Если 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 равно 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', и это особый случай — разделитель тысяч не используется по соображениям обратной совместимости.

Эта функция была введена в 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.

END_OF_DOCUMENT_MARKER

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

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

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

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

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

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

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

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

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

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

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

Записывает double 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!" << 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)

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

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

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

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 вместо него.

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

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-5.15/qtextstream.html

Spec-Zone.ru

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