Класс QTextStream
Класс QTextStream предоставляет удобный интерфейс для чтения и записи текста. Подробнее...
| Заголовок: | #include <QTextStream> |
| qmake: | QT += core |
Примечание: Все функции в этом классе являются повторно-входными.
Открытые типы
| Перечисление | ВыравниваниеПоля { ВыравниваниеСлева, ВыравниваниеСправа, ВыравниваниеПоЦентру, ВыравниваниеПоСчету } |
| Перечисление | ФлагЧисла { ПоказатьБазу, ВынужденнаяТочка, ВынужденныйЗнак, ЗаглавныеСимволыБазы, ЗаглавныеЦифры } |
| Флаги | ФлагиЧисел |
| Перечисление | ФорматВещественногоЧисла { ЭкспоненциальнаяФорма, ФиксированнаяФорма, УмныйФормат } |
| Перечисление | Статус { Ok, ЧтениеЗаКонцом, ЧтениеНекорректныхДанных, ОшибкаЗаписи } |
Открытые функции
| 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 также определяет несколько глобальных функций-манипуляторов:
| Манипулятор | Описание |
|---|---|
Qt::bin |
Аналогично setIntegerBase(2). |
Qt::oct |
Аналогично setIntegerBase(8). |
Qt::dec |
Аналогично setIntegerBase(10). |
Qt::hex |
Аналогично setIntegerBase(16). |
Qt::showbase |
Аналогично setNumberFlags(numberFlags() | ShowBase). |
Qt::forcesign |
Аналогично setNumberFlags(numberFlags() | ForceSign). |
Qt::forcepoint |
Аналогично setNumberFlags(numberFlags() | ForcePoint). |
Qt::noshowbase |
Аналогично setNumberFlags(numberFlags() & ~ShowBase). |
Qt::noforcesign |
Аналогично setNumberFlags(numberFlags() & ~ForceSign). |
Qt::noforcepoint |
Аналогично setNumberFlags(numberFlags() & ~ForcePoint). |
Qt::uppercasebase |
Аналогично setNumberFlags(numberFlags() | UppercaseBase). |
Qt::uppercasedigits |
Аналогично setNumberFlags(numberFlags() | UppercaseDigits). |
Qt::lowercasebase |
Аналогично setNumberFlags(numberFlags() & ~UppercaseBase). |
Qt::lowercasedigits |
Аналогично setNumberFlags(numberFlags() & ~UppercaseDigits). |
Qt::fixed |
Аналогично setRealNumberNotation(FixedNotation). |
Qt::scientific |
Аналогично setRealNumberNotation(ScientificNotation). |
Qt::left |
Аналогично setFieldAlignment(AlignLeft). |
Qt::right |
Аналогично setFieldAlignment(AlignRight). |
Qt::center |
Аналогично setFieldAlignment(AlignCenter). |
Qt::endl |
Аналогично operator<<('\n') и flush(). |
Qt::flush |
Аналогично flush(). |
Qt::reset |
Аналогично reset(). |
Qt::ws |
Аналогично skipWhiteSpace(). |
Qt::bom |
Аналогично setGenerateByteOrderMark(true). |
Кроме того, Qt предоставляет три глобальных манипулятора, которые принимают параметр: qSetFieldWidth(), qSetPadChar() и qSetRealNumberPrecision().
См. также QDataStream, QIODevice, QFile, QBuffer, QTcpSocket и Пример кодировок символов.
Документация по типам членов
перечисление QTextStream::FieldAlignment
Это перечисление определяет способ выравнивания текста в полях, когда поле шире, чем текст, занимаемый им.
| Константа | Значение | Описание |
|---|---|---|
QTextStream::AlignLeft |
0 |
Заполнение справа полей. |
QTextStream::AlignRight |
1 |
Заполнение слева полей. |
QTextStream::AlignCenter |
2 |
Заполнение с обеих сторон поля. |
QTextStream::AlignAccountingStyle |
3 |
То же, что AlignRight, за исключением того, что знак числа выравнивается слева. |
См. также setFieldAlignment().
перечисление QTextStream::NumberFlagфлаги QTextStream::NumberFlags
Это перечисление определяет различные флаги, которые можно установить для изменения вывода целых чисел, float и double.
| Константа | Значение | Описание |
|---|---|---|
QTextStream::ShowBase |
0x1 |
Отображает основание как префикс, если основание равно 16 ("0x"), 8 ("0") или 2 ("0b"). |
QTextStream::ForcePoint |
0x2 |
Всегда вставляет десятичный разделитель в числа, даже если нет десятичной части. |
QTextStream::ForceSign |
0x4 |
Всегда вставляет знак в числа, даже для положительных чисел. |
QTextStream::UppercaseBase |
0x8 |
Использует заглавные версии префиксов основания ("0X", "0B"). |
QTextStream::UppercaseDigits |
0x10 |
Использует заглавные буквы для выражения цифр от 10 до 35 вместо строчных. |
Тип NumberFlags является псевдонимом для QFlags<NumberFlag>. Он хранит логическое ИЛИ-соединение значений NumberFlag.
См. также 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 попытается определить кодировку 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 истинно и используется кодек UTF, QTextStream вставит метку порядка байтов (BOM) перед записью любых данных в устройство. Если generate ложно, метка порядка байтов не будет вставлена. Эта функция должна быть вызвана перед записью любых данных. В противном случае она ничего не делает.
См. также 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 типа qlonglong в поток.
QTextStream &QTextStream::operator<<(qulonglong i)
Это перегруженная функция.
Записывает i типа qulonglong в поток.
QTextStream &QTextStream::operator<<(float f)
Записывает вещественное число f в поток, затем возвращает ссылку на QTextStream. По умолчанию QTextStream хранит его с помощью SmartNotation, с точностью до 6 знаков. Вы можете изменить текстовое представление, которое QTextStream будет использовать для вещественных чисел, вызвав setRealNumberNotation(), setRealNumberPrecision() и setNumberFlags().
См. также setFieldWidth(), setRealNumberNotation(), setRealNumberPrecision() и setNumberFlags().
QTextStream &QTextStream::operator<<(double f)
Это перегруженная функция.
Записывает double f в поток.
QTextStream &QTextStream::operator<<(const QString &string)
Записывает строку string в поток и возвращает ссылку на QTextStream. Сначала строка кодируется с помощью назначенного кодека (по умолчанию — QTextCodec::codecForLocale()), прежде чем быть записанной в поток.
См. также setFieldWidth() и setCodec().
QTextStream &QTextStream::operator<<(QStringView string)
Это перегруженная функция.
Записывает string в поток и возвращает ссылку на QTextStream.
Эта функция была добавлена в Qt 5.12.
END_OF_DOCUMENT_MARKERQTextStream &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)
Это перегруженный функцией.
Сохраняет целое число в 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. Число приводится к соответствующему типу. Если вещественное число не найдено в потоке, f устанавливается в 0.0.
В качестве исключения QTextStream допускает строки "nan" и "inf" для представления чисел NAN и INF.
Пробелы в начале пропускаются.
QTextStream &QTextStream::operator>>(double &f)
Это перегруженный функцией.
Сохраняет вещественное число в 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 &bin(QTextStream &stream)
Вызывает QTextStream::setIntegerBase(2) для stream и возвращает stream.
См. также oct(), dec(), hex() и манипуляторы QTextStream.
QTextStream &bom(QTextStream &stream)
Переключает вставку маркера порядка байтов в stream, когда QTextStream используется с кодеком UTF.
См. также QTextStream::setGenerateByteOrderMark() и манипуляторы QTextStream.
QTextStream ¢er(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' << Qt::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.14/qtextstream.html