Spec-Zone.ru › Qt 5.12

Класс QTextStream

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

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

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

Типы публичного доступа

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

Публичные функции

QTextStream()
QTextStream(QIODevice *device)
QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
QTextStream(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
QTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly)
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)
END_OF_DOCUMENT_MARKER
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 предоставляет удобный интерфейс для чтения и записи текста.

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 поддерживает потоковую передачу в QStrings, QByteArrays и буферы 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 также определяет несколько глобальных функций-манипуляторов:

Манипулятор Описание
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 — это typedef для 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()

Создаёт поток QTextStream. Перед использованием для чтения или записи необходимо назначить устройство или строку.

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

QTextStream::QTextStream(QIODevice *device)

Создаёт QTextStream, который работает с device.

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(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite)

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

QTextStream::QTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite)

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

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;
          ...
    }
}

[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, или 0, если устройство не назначено.

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

См. также 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, или 0, если строка не назначена.

См. также 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 чисел с плавающей точкой или двойной точности.

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

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

END_OF_DOCUMENT_MARKER

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

QTextStream &bin(QTextStream &stream)

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

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

QTextStream &bom(QTextStream &stream)

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

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

QTextStream &center(QTextStream &stream)

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

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

QTextStream &dec(QTextStream &stream)

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

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

QTextStream &endl(QTextStream &stream)

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

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

stream << '\n' << flush;

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

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

QTextStream &fixed(QTextStream &stream)

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

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

QTextStream &flush(QTextStream &stream)

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

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

QTextStream &forcepoint(QTextStream &stream)

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

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

QTextStream &forcesign(QTextStream &stream)

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

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

QTextStream &hex(QTextStream &stream)

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

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

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

QTextStream &left(QTextStream &stream)

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

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

QTextStream &lowercasebase(QTextStream &stream)

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

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

QTextStream &lowercasedigits(QTextStream &stream)

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

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

QTextStream &noforcepoint(QTextStream &stream)

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

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

QTextStream &noforcesign(QTextStream &stream)

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

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

QTextStream &noshowbase(QTextStream &stream)

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

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

QTextStream &oct(QTextStream &stream)

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

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

QTextStreamManipulator qSetFieldWidth(int width)

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

QTextStreamManipulator qSetPadChar(QChar ch)

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

QTextStreamManipulator qSetRealNumberPrecision(int precision)

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

QTextStream &reset(QTextStream &stream)

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

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

QTextStream &right(QTextStream &stream)

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

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

QTextStream &scientific(QTextStream &stream)

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

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

QTextStream &showbase(QTextStream &stream)

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

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

QTextStream &uppercasebase(QTextStream &stream)

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

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

QTextStream &uppercasedigits(QTextStream &stream)

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

См. также lowercasedigits(), uppercasebase(), и манипуляторы 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.12/qtextstream.html

Spec-Zone.ru

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