Класс QTextStream
Класс QTextStream предоставляет удобный интерфейс для чтения и записи текста. Подробнее...
| Заголовок: | #include <QTextStream> |
| qmake: | QT += core |
Примечание: Все функции этого класса являются реентерабельными.
Открытые типы
| Перечисление | ВыравниваниеПоля { ВыравниваниеСлева, ВыравниваниеСправа, ВыравниваниеПоЦентру, ВыравниваниеПоБухгалтерскомуСтилю } |
| Перечисление | ФлагЧисла { ПоказатьОснование, ВынужденнаяДесятичнаяТочка, ВынужденныйЗнак, ОснованиеВВерхнемРегистре, ЦифрыВВерхнемРегистре } |
| Флаги | ФлагиЧисел |
| Перечисление | ФорматДействительногоЧисла { ЭкспоненциальнаяФорма, ФорматФиксированнойТочки, УмныйФормат } |
| Перечисление | Статус { ОК, ЧтениеЗаКонцом, ЧтениеНекорректныхДанных, ОшибкаЗаписи } |
Открытые функции
| QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly) | |
| QTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite) | |
| QTextStream(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite) | |
| QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite) | |
| QTextStream(QIODevice *device) | |
| QTextStream() | |
| virtual | ~QTextStream() |
| bool | atEnd() const |
| bool | autoDetectUnicode() const |
| QTextCodec * | codec() const |
| QIODevice * | device() const |
| QTextStream::FieldAlignment | fieldAlignment() const |
| int | fieldWidth() const |
| void | flush() |
| bool | generateByteOrderMark() const |
| int | integerBase() const |
| QLocale | locale() const |
| QTextStream::NumberFlags | numberFlags() const |
| QChar | padChar() const |
| qint64 | pos() const |
| QString | read(qint64 maxlen) |
| QString | readAll() |
| QString | readLine(qint64 maxlen = 0) |
| bool | readLineInto(QString *line, qint64 maxlen = 0) |
| QTextStream::RealNumberNotation | realNumberNotation() const |
| int | realNumberPrecision() const |
| void | reset() |
| void | resetStatus() |
| bool | seek(qint64 pos) |
| void | setAutoDetectUnicode(bool enabled) |
| void | setCodec(QTextCodec *codec) |
| void | setCodec(const char *codecName) |
| void | setDevice(QIODevice *device) |
| void | setFieldAlignment(QTextStream::FieldAlignment mode) |
| void | setFieldWidth(int width) |
| void | setGenerateByteOrderMark(bool generate) |
| void | setIntegerBase(int base) |
| void | setLocale(const QLocale &locale) |
| void | setNumberFlags(QTextStream::NumberFlags flags) |
| void | setPadChar(QChar ch) |
| void | setRealNumberNotation(QTextStream::RealNumberNotation notation) |
| void | setRealNumberPrecision(int precision) |
| void | setStatus(QTextStream::Status status) |
| void | setString(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite) |
| void | skipWhiteSpace() |
| QTextStream::Status | status() const |
| QString * | string() const |
| QTextStream & | operator<<(QChar c) |
| QTextStream & | operator<<(char c) |
| QTextStream & | operator<<(short i) |
| QTextStream & | operator<<(unsigned short i) |
| QTextStream & | operator<<(int i) |
| QTextStream & | operator<<(unsigned int i) |
| QTextStream & | operator<<(long i) |
| QTextStream & | operator<<(unsigned long i) |
| QTextStream & | operator<<(qlonglong i) |
| QTextStream & | operator<<(qulonglong i) |
| QTextStream & | operator<<(float f) |
| QTextStream & | operator<<(double f) |
| QTextStream & | operator<<(const QString &string) |
| QTextStream & | operator<<(QStringView string) |
| QTextStream & | operator<<(QLatin1String string) |
| QTextStream & | operator<<(const QStringRef &string) |
| QTextStream & | operator<<(const QByteArray &array) |
| QTextStream & | operator<<(const char *string) |
| QTextStream & | operator<<(const void *ptr) |
| QTextStream & | operator>>(QChar &c) |
| QTextStream & | operator>>(char &c) |
| QTextStream & | operator>>(short &i) |
| QTextStream & | operator>>(unsigned short &i) |
| QTextStream & | operator>>(int &i) |
| QTextStream & | operator>>(unsigned int &i) |
| QTextStream & | operator>>(long &i) |
| QTextStream & | operator>>(unsigned long &i) |
| QTextStream & | operator>>(qlonglong &i) |
| QTextStream & | operator>>(qulonglong &i) |
| QTextStream & | operator>>(float &f) |
| QTextStream & | operator>>(double &f) |
| QTextStream & | operator>>(QString &str) |
| QTextStream & | operator>>(QByteArray &array) |
| QTextStream & | operator>>(char *c) |
Связанные нечленные функции
| QTextStream & | bin(QTextStream &stream) |
| QTextStream & | bom(QTextStream &stream) |
| QTextStream & | center(QTextStream &stream) |
| QTextStream & | dec(QTextStream &stream) |
| QTextStream & | endl(QTextStream &stream) |
| QTextStream & | fixed(QTextStream &stream) |
| QTextStream & | flush(QTextStream &stream) |
| QTextStream & | forcepoint(QTextStream &stream) |
| QTextStream & | forcesign(QTextStream &stream) |
| QTextStream & | hex(QTextStream &stream) |
| QTextStream & | left(QTextStream &stream) |
| QTextStream & | lowercasebase(QTextStream &stream) |
| QTextStream & | lowercasedigits(QTextStream &stream) |
| QTextStream & | noforcepoint(QTextStream &stream) |
| QTextStream & | noforcesign(QTextStream &stream) |
| QTextStream & | noshowbase(QTextStream &stream) |
| QTextStream & | oct(QTextStream &stream) |
| QTextStreamManipulator | qSetFieldWidth(int width) |
| QTextStreamManipulator | qSetPadChar(QChar ch) |
| QTextStreamManipulator | qSetRealNumberPrecision(int precision) |
| QTextStream & | reset(QTextStream &stream) |
| QTextStream & | right(QTextStream &stream) |
| QTextStream & | scientific(QTextStream &stream) |
| QTextStream & | showbase(QTextStream &stream) |
| QTextStream & | uppercasebase(QTextStream &stream) |
| QTextStream & | uppercasedigits(QTextStream &stream) |
| QTextStream & | ws(QTextStream &stream) |
Подробное описание
QTextStream может работать с QIODevice, QByteArray или QString. Используя операторы потокового ввода-вывода QTextStream, вы можете удобно читать и записывать слова, строки и числа. Для генерации текста QTextStream поддерживает параметры форматирования для выравнивания и заполнения полей, а также форматирование чисел. Пример:
QFile data("output.txt");
if (data.open(QFile::WriteOnly | QFile::Truncate)) {
QTextStream out(&data);
out << "Result: " << qSetFieldWidth(10) << left << 3.14 << 2.7;
// writes "Result: 3.14 2.7 "
} Также часто используется QTextStream для чтения входных данных консоли и записи выходных данных консоли. QTextStream учитывает локаль и автоматически декодирует стандартный ввод с помощью соответствующего кодека. Пример:
QTextStream stream(stdin);
QString line;
while (stream.readLineInto(&line)) {
...
} Помимо использования конструкторов QTextStream, вы также можете установить устройство или строку, с которыми работает QTextStream, вызвав setDevice() или setString(). Вы можете перейти к определенной позиции, вызвав seek(), а atEnd() вернёт true, когда больше нет данных для чтения. Если вы вызываете flush(), QTextStream очистит все данные из буфера записи в устройство и вызовет flush() для устройства.
Внутри, QTextStream использует буфер на основе Юникода, а QTextCodec используется QTextStream для автоматической поддержки различных кодировок символов. По умолчанию, QTextCodec::codecForLocale() используется для чтения и записи, но вы также можете установить кодировку, вызвав setCodec(). Также поддерживается автоматическое определение Юникода. Когда эта функция включена (по умолчанию), QTextStream будет определять BOM (Byte Order Mark) UTF-16 или UTF-32 и переключаться на соответствующую кодировку UTF при чтении. QTextStream по умолчанию не записывает BOM, но вы можете включить это, вызвав setGenerateByteOrderMark(true). Когда QTextStream работает непосредственно с QString, кодировка отключается.
Существует три основных способа использования QTextStream при чтении текстовых файлов:
- По частям, вызывая readLine() или readAll().
- По словам. QTextStream поддерживает потоковую передачу в QString, QByteArray и буферы char*. Слова разделяются пробелами, а ведущие пробелы автоматически пропускаются.
- По символам, потоковой передачей в QChar или типы char. Этот метод часто используется для удобной обработки ввода при разборе файлов, независимо от кодировки символов и семантики конца строки. Чтобы пропустить пробелы, вызовите skipWhiteSpace().
Поскольку текстовый поток использует буфер, вы не должны читать из потока, используя реализацию суперкласса. Например, если у вас есть QFile и вы читаете из него напрямую с помощью QFile::readLine() вместо использования потока, внутренняя позиция текстового потока будет не синхронизирована с позицией файла.
По умолчанию, когда из текстового потока считываются числа, QTextStream автоматически обнаруживает представление основания числа. Например, если число начинается с "0x", предполагается, что оно представлено в шестнадцатеричном формате. Если оно начинается с цифр 1-9, предполагается, что оно представлено в десятичном формате и так далее. Вы можете установить основание целых чисел, тем самым отключив автоматическое определение, вызвав setIntegerBase(). Пример:
QTextStream in("0x50 0x20");
int firstNumber, secondNumber;
in >> firstNumber; // firstNumber == 80
in >> dec >> secondNumber; // secondNumber == 0
char ch;
in >> ch; // ch == 'x' QTextStream поддерживает множество вариантов форматирования для генерации текста. Вы можете установить ширину поля и символ заполнения, вызвав setFieldWidth() и setPadChar(). Используйте setFieldAlignment(), чтобы установить выравнивание внутри каждого поля. Для вещественных чисел вызовите setRealNumberNotation() и setRealNumberPrecision(), чтобы установить обозначение (SmartNotation, ScientificNotation, FixedNotation) и точность в цифрах генерируемого числа. Также доступны некоторые дополнительные параметры форматирования чисел через setNumberFlags().
Как <iostream> в стандартной библиотеке C++, QTextStream также определяет несколько глобальных функций-манипуляторов:
| Manipulator | Описание |
|---|---|
bin |
То же, что и setIntegerBase(2). |
oct |
То же, что и setIntegerBase(8). |
dec |
То же, что и setIntegerBase(10). |
hex |
То же, что и setIntegerBase(16). |
showbase |
То же, что и setNumberFlags(numberFlags() | ShowBase). |
forcesign |
То же, что и setNumberFlags(numberFlags() | ForceSign). |
forcepoint |
То же, что и setNumberFlags(numberFlags() | ForcePoint). |
noshowbase |
То же, что и setNumberFlags(numberFlags() & ~ShowBase). |
noforcesign |
То же, что и setNumberFlags(numberFlags() & ~ForceSign). |
noforcepoint |
То же, что и setNumberFlags(numberFlags() & ~ForcePoint). |
uppercasebase |
То же, что и setNumberFlags(numberFlags() | UppercaseBase). |
uppercasedigits |
То же, что и setNumberFlags(numberFlags() | UppercaseDigits). |
lowercasebase |
То же, что и setNumberFlags(numberFlags() & ~UppercaseBase). |
lowercasedigits |
То же, что и setNumberFlags(numberFlags() & ~UppercaseDigits). |
fixed |
То же, что и setRealNumberNotation(FixedNotation). |
scientific |
То же, что и setRealNumberNotation(ScientificNotation). |
left |
То же, что и setFieldAlignment(AlignLeft). |
right |
То же, что и setFieldAlignment(AlignRight). |
center |
То же, что и setFieldAlignment(AlignCenter). |
endl |
То же, что и operator<<('\n') и flush(). |
flush |
То же, что и flush(). |
reset |
То же, что и reset(). |
ws |
То же, что и skipWhiteSpace(). |
bom |
То же, что и setGenerateByteOrderMark(true). |
Кроме того, Qt предоставляет три глобальных манипулятора, которые принимают параметр: qSetFieldWidth(), qSetPadChar() и qSetRealNumberPrecision().
См. также QDataStream, QIODevice, QFile, QBuffer, QTcpSocket и Пример кодировок текста.
Документация по типам членов
перечисление QTextStream::FieldAlignment
Это перечисление определяет, как выравнивать текст в полях, когда поле шире, чем текст, который его занимает.
| Постоянная | Значение | Описание |
|---|---|---|
QTextStream::AlignLeft |
0 |
Заполнение справа от полей. |
QTextStream::AlignRight |
1 |
Заполнение слева от полей. |
QTextStream::AlignCenter |
2 |
Заполнение с обеих сторон поля. |
QTextStream::AlignAccountingStyle |
3 |
То же, что и AlignRight, за исключением того, что знак числа выравнивается слева. |
См. также setFieldAlignment().
перечисление QTextStream::NumberFlagфлаги QTextStream::NumberFlags
Это перечисление определяет различные флаги, которые можно установить для изменения вывода целых чисел, float и double.
| Постоянная | Значение | Описание |
|---|---|---|
QTextStream::ShowBase |
0x1 |
Показывать основание как префикс, если основание равно 16 ("0x"), 8 ("0") или 2 ("0b"). |
QTextStream::ForcePoint |
0x2 |
Всегда использовать десятичный разделитель в числах, даже если десятичная часть отсутствует. |
QTextStream::ForceSign |
0x4 |
Всегда использовать знак в числах, даже для положительных чисел. |
QTextStream::UppercaseBase |
0x8 |
Использовать заглавные версии префиксов основания ("0X", "0B"). |
QTextStream::UppercaseDigits |
0x10 |
Использовать заглавные буквы для представления цифр от 10 до 35 вместо строчных. |
Тип NumberFlags — это псевдоним для QFlags<NumberFlag>. Он хранит комбинацию значений NumberFlag, объединённую операцией «ИЛИ».
См. также setNumberFlags().
enum QTextStream::RealNumberNotation
Этот перечисление определяет, какие обозначения использовать для представления float и double в виде строк.
| Постоянная | Значение | Описание |
|---|---|---|
QTextStream::ScientificNotation |
2 |
Научная запись (флаг printf()'s %e). |
QTextStream::FixedNotation |
1 |
Запись с фиксированной точкой (флаг printf()'s %f). |
QTextStream::SmartNotation |
0 |
Научная или запись с фиксированной точкой, в зависимости от того, какая из них наиболее подходит (флаг printf()'s %g). |
См. также setRealNumberNotation().
enum QTextStream::Status
Это перечисление описывает текущий статус потока текста.
| Постоянная | Значение | Описание |
|---|---|---|
QTextStream::Ok |
0 |
Поток текста работает нормально. |
QTextStream::ReadPastEnd |
1 |
Поток текста прочитал данные до конца в базовом устройстве. |
QTextStream::ReadCorruptData |
2 |
Поток текста прочитал повреждённые данные. |
QTextStream::WriteFailed |
3 |
Поток текста не может записать в базовое устройство. |
См. также status().
Документация по функциям-членам
QTextStream::QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly)
Создаёт объект QTextStream, который работает с array, используя openMode для определения режима открытия. К массиву доступ осуществляется только для чтения, независимо от значений в openMode.
Этот конструктор удобен для работы со строками-константами. Пример:
int main(int argc, char *argv[])
{
// read numeric arguments (123, 0x20, 4.5...)
for (int i = 1; i < argc; ++i) {
int number;
QTextStream in(argv[i]);
in >> number;
...
}
} QTextStream::QTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
Создаёт объект QTextStream, который работает с array, используя openMode для определения режима открытия. Внутри массив оборачивается объектом QBuffer.
QTextStream::QTextStream(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
Создаёт объект QTextStream, который работает с string, используя openMode для определения режима открытия.
QTextStream::QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
Создаёт объект QTextStream, который работает с fileHandle, используя openMode для определения режима открытия. Внутри создаётся объект QFile для обработки указателя FILE.
Этот конструктор полезен для работы напрямую с обычными потоками ввода-вывода, основанными на FILE: stdin, stdout и stderr. Пример:
QString str; QTextStream in(stdin); in >> str;
QTextStream::QTextStream(QIODevice *device)
Создаёт объект QTextStream, который работает с device.
QTextStream::QTextStream()
Создаёт объект QTextStream. Перед использованием для чтения или записи необходимо присвоить устройство или строку.
См. также setDevice() и setString().
[virtual] QTextStream::~QTextStream()
Уничтожает объект QTextStream.
Если поток работает с устройством, flush() будет вызван неявно. В противном случае устройство не затрагивается.
bool QTextStream::atEnd() const
Возвращает true если больше нет данных для чтения из QTextStream; в противном случае возвращает false. Это аналогично, но не эквивалентно вызову QIODevice::atEnd(), так как QTextStream также учитывает свой внутренний буфер Unicode.
bool QTextStream::autoDetectUnicode() const
Возвращает true если автоматическое определение Unicode включено, в противном случае возвращает false. Автоматическое определение Unicode включено по умолчанию.
См. также setAutoDetectUnicode(), setCodec() и QTextCodec::codecForUtfText().
QTextCodec *QTextStream::codec() const
Возвращает кодек, текущий назначенный потоку.
См. также setCodec(), setAutoDetectUnicode() и locale().
QIODevice *QTextStream::device() const
Возвращает текущее устройство, связанное с QTextStream, или nullptr если устройство не присвоено.
См. также setDevice() и string().
QTextStream::FieldAlignment QTextStream::fieldAlignment() const
Возвращает текущее выравнивание поля.
См. также setFieldAlignment() и fieldWidth().
int QTextStream::fieldWidth() const
Возвращает текущую ширину поля.
См. также setFieldWidth().
void QTextStream::flush()
Очищает все данные, ожидающие записи в устройство.
Если QTextStream работает со строкой, эта функция ничего не делает.
bool QTextStream::generateByteOrderMark() const
Возвращает true если QTextStream задано генерировать UTF BOM (Byte Order Mark) при использовании кодека UTF; в противном случае возвращает false. Генерация UTF BOM по умолчанию выключена.
См. также setGenerateByteOrderMark().
int QTextStream::integerBase() const
Возвращает текущее основание целых чисел. 0 означает, что основание определяется при чтении, или 10 (десятичное) при генерации чисел.
См. также setIntegerBase(), QString::number() и numberFlags().
QLocale QTextStream::locale() const
Возвращает локаль для данного потока. По умолчанию используется локаль C.
Функция была добавлена в Qt 4.5.
См. также setLocale().
QTextStream::NumberFlags QTextStream::numberFlags() const
Возвращает текущие флаги чисел.
См. также setNumberFlags(), integerBase() и realNumberNotation().
QChar QTextStream::padChar() const
Возвращает текущий символ заполнения.
См. также setPadChar() и setFieldWidth().
qint64 QTextStream::pos() const
Возвращает позицию устройства, соответствующую текущей позиции потока, или -1, если произошла ошибка (например, если нет устройства или строки, или есть ошибка устройства).
Так как QTextStream буферизован, этой функции может потребоваться выполнить поиск в устройстве для восстановления корректной позиции устройства. Эта операция может быть дорогостоящей, поэтому следует избегать вызова этой функции в узком цикле.
Эта функция была представлена в Qt 4.2.
См. также seek().
QString QTextStream::read(qint64 maxlen)
Считывает не более maxlen символов из потока и возвращает прочитанные данные как QString.
Эта функция была представлена в Qt 4.1.
См. также readAll(), readLine() и QIODevice::read().
QString QTextStream::readAll()
Считывает всё содержимое потока и возвращает его как QString. Избегайте использования этой функции при работе с большими файлами, так как она потребляет значительное количество памяти.
Вызов readLine() предпочтительнее, если неизвестно, сколько данных доступно.
См. также readLine().
QString QTextStream::readLine(qint64 maxlen = 0)
Считывает одну строку текста из потока и возвращает её как QString. Максимальная длина строки задаётся значением maxlen. Если поток содержит строки длиннее этого значения, строки будут разбиты после maxlen символов и возвращены частями.
Если maxlen равно 0, строки могут иметь любую длину.
Возвращаемая строка не содержит символов конца строки ("\n" или "\r\n"), поэтому вызов QString::trimmed() может быть не нужен.
Если поток достиг конца файла, readLine() вернёт пустой QString. Для строк или устройств, поддерживающих это, можно явно проверить конец потока с помощью atEnd().
См. также readAll() и QIODevice::readLine().
bool QTextStream::readLineInto(QString *line, qint64 maxlen = 0)
Считывает одну строку текста из потока в line. Если line равен 0, прочитанная строка не сохраняется.
Максимальная длина строки задаётся значением maxlen. Если поток содержит строки длиннее этого значения, строки будут разбиты после maxlen символов и возвращены частями.
Если maxlen равно 0, строки могут иметь любую длину.
Результат не содержит символов конца строки ("\n" или "\r\n"), поэтому вызов QString::trimmed() может быть не нужен.
Если у line достаточно места для данных, которые собираются быть прочитанными, этой функции, возможно, не потребуется выделять новую память. Благодаря этому, она может быть быстрее, чем readLine().
Возвращает false , если поток достиг конца файла или произошла ошибка; в противном случае возвращает true. Содержимое в line до вызова в любом случае игнорируется.
Эта функция была представлена в Qt 5.5.
См. также readAll() и QIODevice::readLine().
QTextStream::RealNumberNotation QTextStream::realNumberNotation() const
Возвращает текущий формат представления вещественных чисел.
См. также setRealNumberNotation(), realNumberPrecision(), numberFlags() и integerBase().
int QTextStream::realNumberPrecision() const
Возвращает текущую точность вещественных чисел, или количество знаков после запятой, которые QTextStream будет записывать при генерации вещественных чисел.
См. также setRealNumberPrecision(), setRealNumberNotation(), realNumberNotation(), numberFlags() и integerBase().
void QTextStream::reset()
Сбрасывает форматы QTextStream, возвращая его в исходное состояние. Устройство, строка и буферизованные данные остаются без изменений.
void QTextStream::resetStatus()
Сбрасывает состояние текстового потока.
Эта функция была представлена в Qt 4.1.
См. также QTextStream::Status, status() и setStatus().
bool QTextStream::seek(qint64 pos)
Перемещает указатель на позицию pos в устройстве. Возвращает true при успехе; в противном случае возвращает false.
void QTextStream::setAutoDetectUnicode(bool enabled)
Если enabled истинно, QTextStream попытается определить кодировку Юникод, заглянув в данные потока, чтобы увидеть, может ли он найти метку порядка байтов (BOM) UTF-8, UTF-16 или UTF-32. Если эта метка найдена, QTextStream заменит текущий кодек на UTF-кодек.
Эта функция может использоваться вместе с setCodec(). Обычно кодек устанавливается в UTF-8, а затем включается обнаружение UTF-16.
См. также autoDetectUnicode(), setCodec() и QTextCodec::codecForUtfText().
void QTextStream::setCodec(QTextCodec *codec)
Устанавливает кодек для этого потока на codec. Кодек используется для декодирования любых данных, считываемых с назначенного устройства, и для кодирования любых данных, записываемых. По умолчанию используется QTextCodec::codecForLocale(), и включено автоматическое обнаружение Юникода.
Если QTextStream работает со строкой, эта функция ничего не делает.
Предупреждение: Если вы вызываете эту функцию, когда текстовый поток считывает данные из открытого последовательного сокета, внутренний буфер может всё ещё содержать текст, декодированный с помощью старого кодека.
См. также codec(), setAutoDetectUnicode() и setLocale().
void QTextStream::setCodec(const char *codecName)
Устанавливает кодек для этого потока на QTextCodec для кодировки, заданной codecName. Распространённые значения для codecName включают "ISO 8859-1", "UTF-8" и "UTF-16". Если кодировка не распознаётся, ничего не происходит.
Пример:
QTextStream out(&file);
out.setCodec("UTF-8"); См. также QTextCodec::codecForName() и setLocale().
void QTextStream::setDevice(QIODevice *device)
Устанавливает текущее устройство на device. Если устройству уже присвоено значение, QTextStream вызовет flush() перед заменой старого устройства.
Примечание: Эта функция сбрасывает локаль до локальной по умолчанию ('C') и кодек до кодека по умолчанию, QTextCodec::codecForLocale().
См. также device() и setString().
void QTextStream::setFieldAlignment(QTextStream::FieldAlignment mode)
Устанавливает выравнивание поля на mode. При использовании вместе с setFieldWidth(), эта функция позволяет генерировать отформатированный вывод с выравниванием текста по левому, правому или центру.
См. также fieldAlignment() и setFieldWidth().
void QTextStream::setFieldWidth(int width)
Устанавливает текущую ширину поля на width. Если width равно 0 (по умолчанию), ширина поля равна длине генерируемого текста.
Примечание: Ширина поля применяется ко всем элементам, добавленным в этот поток после вызова этой функции (включая endl). Это поведение отличается от аналогичных классов в STL, где ширина поля применяется только к следующему элементу.
См. также fieldWidth() и setPadChar().
void QTextStream::setGenerateByteOrderMark(bool generate)
Если generate истинно и используется UTF-кодек, QTextStream вставит BOM (метка порядка байтов) перед записью любых данных в устройство. Если generate ложно, BOM не будет вставлен. Эту функцию необходимо вызвать перед записью любых данных. В противном случае она ничего не делает.
См. также generateByteOrderMark() и bom().
void QTextStream::setIntegerBase(int base)
Устанавливает основание целых чисел в base, как для чтения, так и для генерации чисел. base может быть 2 (двоичное), 8 (восьмеричное), 10 (десятичное) или 16 (шестнадцатеричное). Если base равно 0, QTextStream попытается определить основание, проанализировав данные в потоке. При генерации чисел QTextStream предполагает основание 10, если основание не было явно установлено.
См. также integerBase(), QString::number() и setNumberFlags().
void QTextStream::setLocale(const QLocale &locale)
Устанавливает локаль для этого потока в locale. Указанная локаль используется для преобразований между числами и их строковыми представлениями.
По умолчанию локаль — C, и это особый случай — разделитель тысяч не используется по соображениям обратной совместимости.
Эта функция была добавлена в Qt 4.5.
См. также locale().
void QTextStream::setNumberFlags(QTextStream::NumberFlags flags)
Устанавливает текущие флаги чисел в flags. flags — набор флагов из перечисления NumberFlag и описывает параметры форматирования генерируемого кода (например, всегда ли писать основание или знак числа).
См. также numberFlags(), setIntegerBase() и setRealNumberNotation().
void QTextStream::setPadChar(QChar ch)
Устанавливает символ заполнения на ch. Значение по умолчанию — ASCII-пробел (' '), или QChar(0x20). Этот символ используется для заполнения пробелов в полях при генерации текста.
Пример:
QString s;
QTextStream out(&s);
out.setFieldWidth(10);
out.setFieldAlignment(QTextStream::AlignCenter);
out.setPadChar('-');
out << "Qt" << "rocks!"; Строка s содержит:
----Qt------rocks!--
См. также padChar() и setFieldWidth().
void QTextStream::setRealNumberNotation(QTextStream::RealNumberNotation notation)
Устанавливает обозначение вещественного числа на notation (SmartNotation, FixedNotation, ScientificNotation). При чтении и генерации чисел QTextStream использует это значение для определения форматирования вещественных чисел.
См. также realNumberNotation(), setRealNumberPrecision(), setNumberFlags() и setIntegerBase().
void QTextStream::setRealNumberPrecision(int precision)
Устанавливает точность вещественных чисел в precision. Это значение описывает количество знаков дробной части, которые QTextStream должен записать при генерации вещественных чисел.
Точность не может быть отрицательной. Значение по умолчанию — 6.
См. также realNumberPrecision() и setRealNumberNotation().
void QTextStream::setStatus(QTextStream::Status status)
Устанавливает состояние текстового потока в заданное status.
Последующие вызовы setStatus() игнорируются до тех пор, пока не будет вызван resetStatus().
Эта функция была добавлена в Qt 4.1.
См. также Status, status() и resetStatus().
void QTextStream::setString(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
Устанавливает текущую строку на string, используя указанный openMode. Если устройству уже присвоено значение, QTextStream вызовет flush() перед его заменой.
См. также string() и setDevice().
void QTextStream::skipWhiteSpace()
Читает и отбрасывает пробелы из потока до тех пор, пока не будет обнаружен символ, не являющийся пробелом, или пока atEnd() не вернёт true. Эта функция полезна при чтении потока посимвольно.
Символы пробелов — это все символы, для которых QChar::isSpace() возвращает true.
См. также operator>>().
QTextStream::Status QTextStream::status() const
Возвращает состояние текстового потока.
См. также QTextStream::Status, setStatus() и resetStatus().
QString *QTextStream::string() const
Возвращает текущую строку, назначенную для QTextStream, или nullptr, если строка не назначена.
См. также setString() и device().
QTextStream &QTextStream::operator<<(QChar c)
Записывает символ c в поток, а затем возвращает ссылку на QTextStream.
См. также setFieldWidth().
QTextStream &QTextStream::operator<<(char c)
Это перегруженная функция.
Преобразует c из ASCII в QChar, а затем записывает его в поток.
QTextStream &QTextStream::operator<<(short i)
Записывает целое число i в поток, а затем возвращает ссылку на QTextStream. По умолчанию число хранится в десятичном формате, но вы также можете установить основание, вызвав setIntegerBase().
См. также setFieldWidth() и setNumberFlags().
QTextStream &QTextStream::operator<<(unsigned short i)
Это перегруженная функция.
Записывает беззнаковое короткое целое i в поток.
QTextStream &QTextStream::operator<<(int i)
Это перегруженная функция.
Записывает целое i со знаком в поток.
QTextStream &QTextStream::operator<<(unsigned int i)
Это перегруженная функция.
Записывает беззнаковое целое i в поток.
QTextStream &QTextStream::operator<<(long i)
Это перегруженная функция.
Записывает целое i со знаком в поток.
QTextStream &QTextStream::operator<<(unsigned long i)
Это перегруженная функция.
Записывает беззнаковое целое i в поток.
QTextStream &QTextStream::operator<<(qlonglong i)
Это перегруженная функция.
Записывает i в поток.
QTextStream &QTextStream::operator<<(qulonglong i)
Это перегруженная функция.
Записывает i в поток.
QTextStream &QTextStream::operator<<(float f)
Записывает вещественное число f в поток, а затем возвращает ссылку на QTextStream. По умолчанию QTextStream сохраняет его с использованием SmartNotation с точностью до 6 знаков. Вы можете изменить текстовое представление, которое QTextStream будет использовать для вещественных чисел, вызвав setRealNumberNotation(), setRealNumberPrecision() и setNumberFlags().
См. также setFieldWidth(), setRealNumberNotation(), setRealNumberPrecision() и setNumberFlags().
QTextStream &QTextStream::operator<<(double f)
Это перегруженный метод.
Записывает двойное значение f в поток.
QTextStream &QTextStream::operator<<(const QString &string)
Записывает строку string в поток и возвращает ссылку на QTextStream. Сначала строка кодируется с помощью заданного кодека (по умолчанию используется QTextCodec::codecForLocale()), а затем записывается в поток.
См. также setFieldWidth() и setCodec().
QTextStream &QTextStream::operator<<(QStringView string)
Это перегруженный метод.
Записывает string в поток и возвращает ссылку на QTextStream.
Этот метод был добавлен в Qt 5.12.
QTextStream &QTextStream::operator<<(QLatin1String string)
Это перегруженный метод.
Записывает string в поток и возвращает ссылку на QTextStream.
QTextStream &QTextStream::operator<<(const QStringRef &string)
Это перегруженный метод.
Записывает string в поток и возвращает ссылку на QTextStream.
Этот метод был добавлен в Qt 5.6.
QTextStream &QTextStream::operator<<(const QByteArray &array)
Это перегруженный метод.
Записывает array в поток. Содержимое array преобразуется с помощью QString::fromUtf8().
QTextStream &QTextStream::operator<<(const char *string)
Это перегруженный метод.
Записывает константную строку, на которую указывает string, в поток. Предполагается, что string закодирован в ISO-8859-1. Этот оператор удобен при работе с константными строковыми данными. Пример:
QTextStream out(stdout); out << "Qt rocks!" << endl;
Предупреждение: QTextStream предполагает, что string указывает на строку текста, завершенную символом '\0'. Если завершающего символа '\0' нет, ваше приложение может аварийно завершиться.
QTextStream &QTextStream::operator<<(const void *ptr)
Это перегруженный метод.
Записывает ptr в поток в виде шестнадцатеричного числа с основанием.
QTextStream &QTextStream::operator>>(QChar &c)
Читает символ из потока и сохраняет его в c. Возвращает ссылку на QTextStream, позволяя вложенное использование нескольких операторов. Пример:
QTextStream in(file); QChar ch1, ch2, ch3; in >> ch1 >> ch2 >> ch3;
Пробелы не пропускаются.
QTextStream &QTextStream::operator>>(char &c)
Это перегруженный метод.
Читает символ из потока и сохраняет его в c. Символ из потока преобразуется в ISO-5589-1 перед сохранением.
См. также QChar::toLatin1().
QTextStream &QTextStream::operator>>(short &i)
Читает целое число из потока и сохраняет его в i, затем возвращает ссылку на QTextStream. Число приводится к нужному типу перед сохранением. Если в потоке не было обнаружено число, i устанавливается в 0.
По умолчанию QTextStream пытается определить основание числа по следующим правилам:
| Префикс | Основание |
|---|---|
| "0b" или "0B" | 2 (двоичное) |
| "0" с последующим "0-7" | 8 (восьмеричное) |
| "0" в остальных случаях | 10 (десятичное) |
| "0x" или "0X" | 16 (шестнадцатеричное) |
| "1" до "9" | 10 (десятичное) |
Вы можете явно задать основание целого числа с помощью setIntegerBase(). Это отключит автоматическое определение и немного ускорит QTextStream.
Пробелы в начале пропускаются.
QTextStream &QTextStream::operator>>(unsigned short &i)
Это перегруженный метод.
Сохраняет целое число в беззнаковом short i.
QTextStream &QTextStream::operator>>(int &i)
Это перегруженный метод.
Сохраняет целое число в знаковом int i.
QTextStream &QTextStream::operator>>(unsigned int &i)
Это перегруженный метод.
Сохраняет целое число в беззнаковом int i.
QTextStream &QTextStream::operator>>(long &i)
Это перегруженный метод.
Сохраняет целое число в знакомом long i.
QTextStream &QTextStream::operator>>(unsigned long &i)
Это перегруженный метод.
Сохраняет целое число в беззнаковом long i.
QTextStream &QTextStream::operator>>(qlonglong &i)
Это перегруженный метод.
Сохраняет целое число в qlonglong i.
QTextStream &QTextStream::operator>>(qulonglong &i)
Это перегруженный метод.
Сохраняет целое число в qulonglong i.
QTextStream &QTextStream::operator>>(float &f)
Читает вещественное число из потока и сохраняет его в f, затем возвращает ссылку на QTextStream. Число приводится к нужному типу. Если в потоке не найдено вещественное число, f устанавливается в 0.0.
В качестве исключения QTextStream разрешает строки "nan" и "inf" для представления NAN и INF для float или double.
Пробелы в начале пропускаются.
QTextStream &QTextStream::operator>>(double &f)
Это перегруженный метод.
Сохраняет вещественное число в double f.
QTextStream &QTextStream::operator>>(QString &str)
Читает слово из потока и сохраняет его в str, затем возвращает ссылку на поток. Слова разделяются пробелами (т.е., все символы, для которых QChar::isSpace() возвращает true).
Пробелы в начале пропускаются.
QTextStream &QTextStream::operator>>(QByteArray &array)
Это перегруженный метод.
Преобразует слово в ISO-8859-1 и сохраняет его в array.
См. также QString::toLatin1().
QTextStream &QTextStream::operator>>(char *c)
Это перегруженный метод.
Сохраняет слово в c, завершая его символом '\0'. Если слово недоступно, сохраняется только '\0'.
Предупреждение: Хотя удобно, этот оператор опасен и требует осторожности. QTextStream предполагает, что c указывает на буфер, достаточно большой для хранения слова. Если буфер слишком мал, ваше приложение может аварийно завершиться.
Если возможно, используйте оператор QByteArray вместо него.
Связанные не члены
QTextStream &QTextStream::bin(QTextStream &stream)
Вызывает QTextStream::setIntegerBase(2) для stream и возвращает stream.
См. также oct(), dec(), hex() и манипуляторы QTextStream.
QTextStream &QTextStream::bom(QTextStream &stream)
Переключает вставку метки порядка байтов в stream, когда QTextStream используется с кодеком UTF.
См. также QTextStream::setGenerateByteOrderMark() и манипуляторы QTextStream.
QTextStream &QTextStream::center(QTextStream &stream)
Вызывает QTextStream::setFieldAlignment(QTextStream::AlignCenter) для stream и возвращает stream.
См. также left(), right() и манипуляторы QTextStream.
QTextStream &QTextStream::dec(QTextStream &stream)
Вызывает QTextStream::setIntegerBase(10) для stream и возвращает stream.
См. также bin(), oct(), hex() и манипуляторы QTextStream.
QTextStream &QTextStream::endl(QTextStream &stream)
Записывает '\n' в stream и сбрасывает буфер потока.
Эквивалентно
stream << '\n' << flush;
Примечание: В Windows все символы '\n' записываются как '\r\n', если устройство или строка QTextStream открыты с флагом QIODevice::Text.
См. также flush(), reset() и манипуляторы QTextStream.
QTextStream &QTextStream::fixed(QTextStream &stream)
Вызывает QTextStream::setRealNumberNotation(QTextStream::FixedNotation) для stream и возвращает stream.
См. также scientific() и манипуляторы QTextStream.
QTextStream &QTextStream::flush(QTextStream &stream)
Вызывает QTextStream::flush() для stream и возвращает stream.
См. также endl(), reset() и манипуляторы QTextStream.
QTextStream &QTextStream::forcepoint(QTextStream &stream)
Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() | QTextStream::ForcePoint) для stream и возвращает stream.
См. также noforcepoint(), forcesign(), showbase() и манипуляторы QTextStream.
QTextStream &QTextStream::forcesign(QTextStream &stream)
Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() | QTextStream::ForceSign) для stream и возвращает stream.
См. также noforcesign(), forcepoint(), showbase() и манипуляторы QTextStream.
QTextStream &QTextStream::hex(QTextStream &stream)
Вызывает QTextStream::setIntegerBase(16) для stream и возвращает stream.
Примечание: Модификатор hex может быть использован только для записи в потоки.
См. также bin(), oct(), dec() и манипуляторы QTextStream.
QTextStream &QTextStream::left(QTextStream &stream)
Вызывает QTextStream::setFieldAlignment(QTextStream::AlignLeft) для stream и возвращает stream.
См. также right(), center() и манипуляторы QTextStream.
QTextStream &QTextStream::lowercasebase(QTextStream &stream)
Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() & ~QTextStream::UppercaseBase) для stream и возвращает stream.
См. также uppercasebase(), lowercasedigits() и манипуляторы QTextStream.
QTextStream &QTextStream::lowercasedigits(QTextStream &stream)
Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() & ~QTextStream::UppercaseDigits) для stream и возвращает stream.
См. также uppercasedigits(), lowercasebase() и манипуляторы QTextStream.
QTextStream &QTextStream::noforcepoint(QTextStream &stream)
Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() & ~QTextStream::ForcePoint) для stream и возвращает stream.
См. также forcepoint(), noforcesign(), noshowbase() и манипуляторы QTextStream.
QTextStream &QTextStream::noforcesign(QTextStream &stream)
Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() & ~QTextStream::ForceSign) для stream и возвращает stream.
См. также forcesign(), noforcepoint(), noshowbase() и манипуляторы QTextStream.
QTextStream &QTextStream::noshowbase(QTextStream &stream)
Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() & ~QTextStream::ShowBase) для stream и возвращает stream.
См. также showbase(), noforcesign(), noforcepoint() и манипуляторы QTextStream.
QTextStream &QTextStream::oct(QTextStream &stream)
Вызывает QTextStream::setIntegerBase(8) для stream и возвращает stream.
См. также bin(), dec(), hex() и манипуляторы QTextStream.
QTextStreamManipulator QTextStream::qSetFieldWidth(int width)
Эквивалентно QTextStream::setFieldWidth(width).
QTextStreamManipulator QTextStream::qSetPadChar(QChar ch)
Эквивалентно QTextStream::setPadChar(ch).
QTextStreamManipulator QTextStream::qSetRealNumberPrecision(int precision)
Эквивалентно QTextStream::setRealNumberPrecision(precision).
QTextStream &QTextStream::reset(QTextStream &stream)
Вызывает QTextStream::reset() для stream и возвращает stream.
См. также flush() и манипуляторы QTextStream.
QTextStream &QTextStream::right(QTextStream &stream)
Вызывает QTextStream::setFieldAlignment(QTextStream::AlignRight) для stream и возвращает stream.
См. также left(), center() и манипуляторы QTextStream.
QTextStream &QTextStream::scientific(QTextStream &stream)
Вызывает QTextStream::setRealNumberNotation(QTextStream::ScientificNotation) для stream и возвращает stream.
См. также fixed() и манипуляторы QTextStream.
QTextStream &QTextStream::showbase(QTextStream &stream)
Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() | QTextStream::ShowBase) для stream и возвращает stream.
См. также noshowbase(), forcesign(), forcepoint() и манипуляторы QTextStream.
QTextStream &QTextStream::uppercasebase(QTextStream &stream)
Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() | QTextStream::UppercaseBase) для stream и возвращает stream.
См. также lowercasebase(), uppercasedigits() и манипуляторы QTextStream.
QTextStream &QTextStream::uppercasedigits(QTextStream &stream)
Вызывает QTextStream::setNumberFlags(QTextStream::numberFlags() | QTextStream::UppercaseDigits) для stream и возвращает stream.
См. также lowercasedigits(), uppercasebase() и манипуляторы QTextStream.
QTextStream &QTextStream::ws(QTextStream &stream)
Вызывает skipWhiteSpace() для stream и возвращает stream.
См. также манипуляторы QTextStream.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qtextstream.html