Класс QTextStream
Класс QTextStream предоставляет удобный интерфейс для чтения и записи текста. Подробнее...
| Заголовок: | #include <QTextStream> |
| qmake: | QT += core |
Примечание: Все функции в этом классе являются перевходоспособными.
Открытые типы
| перечисление | ВыравниваниеПоля { ВыравниваниеСлева, ВыравниваниеСправа, ВыравниваниеПоЦентру, ВыравниваниеБухгалтерскогоСтили } |
| перечисление | ФлагЧисла { ПоказатьБазу, ПринудительноТочка, ПринудительноЗнак, БазаПрописными, ЦифрыПрописными } |
| флаги | ФлагиЧисла |
| перечисление | НотацияВещественногоЧисла { НотацияЭкспоненциальная, НотацияФиксированная, УмнаяНотация } |
| перечисление | Статус { Ok, ЧтениеЗаКонцом, ЧтениеНекорректныеДанные, ОшибкаЗаписи } |
Открытые функции
| 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 |
| FieldAlignment | fieldAlignment() const |
| int | fieldWidth() const |
| void | flush() |
| bool | generateByteOrderMark() const |
| int | integerBase() const |
| QLocale | locale() const |
| 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) |
| 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(FieldAlignment mode) |
| void | setFieldWidth(int width) |
| void | setGenerateByteOrderMark(bool generate) |
| void | setIntegerBase(int base) |
| void | setLocale(const QLocale &locale) |
| void | setNumberFlags(NumberFlags flags) |
| void | setPadChar(QChar ch) |
| void | setRealNumberNotation(RealNumberNotation notation) |
| void | setRealNumberPrecision(int precision) |
| void | setStatus(Status status) |
| void | setString(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite) |
| void | skipWhiteSpace() |
| Status | status() const |
| QString * | string() const |
| QTextStream & | operator<<(QChar c) |
| QTextStream & | operator<<(char c) |
| QTextStream & | operator<<(signed short i) |
| QTextStream & | operator<<(unsigned short i) |
| QTextStream & | operator<<(signed int i) |
| QTextStream & | operator<<(unsigned int i) |
| QTextStream & | operator<<(signed 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<<(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>>(signed short &i) |
| QTextStream & | operator>>(unsigned short &i) |
| QTextStream & | operator>>(signed int &i) |
| QTextStream & | operator>>(unsigned int &i) |
| QTextStream & | operator>>(signed 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 используется буфер, основанный на Юникоде, и 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 также определяет несколько глобальных функций-манипуляторов:
| Манипулятор | Описание |
|---|---|
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 и Пример кодировок текста.
Документация типов членов
enum QTextStream::FieldAlignment
Этот перечисление определяет, как выравнивать текст в полях, когда поле шире, чем текст, который его занимает.
| Постоянная | Значение | Описание |
|---|---|---|
QTextStream::AlignLeft |
0 |
Заполнение справа от полей. |
QTextStream::AlignRight |
1 |
Заполнение слева от полей. |
QTextStream::AlignCenter |
2 |
Заполнение с обеих сторон поля. |
QTextStream::AlignAccountingStyle |
3 |
Аналогично AlignRight, за исключением того, что знак числа выровнен слева. |
См. также setFieldAlignment().
enum QTextStream::NumberFlagflags 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() в %e). |
QTextStream::FixedNotation |
1 |
Запись с фиксированной точкой (флаг printf() в %f). |
QTextStream::SmartNotation |
0 |
Научная или запись с фиксированной точкой, в зависимости от того, что имеет больше смысла (флаг printf() в %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.
Этот конструктор полезен для работы напрямую с общими файловыми входными и выходными потоками: 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 *QTextStream::codec() const
Возвращает кодек, который в данный момент назначен потоку.
См. также setCodec(), setAutoDetectUnicode() и locale().
QIODevice *QTextStream::device() const
Возвращает текущее устройство, связанное с QTextStream, или 0, если устройство не назначено.
См. также setDevice() и string().
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().
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().
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 (Byte Order Mark) UTF-16 или UTF-32. Если этот маркер найден, QTextStream заменит текущую кодировку на UTF.
Эта функция может использоваться вместе с setCodec(). Обычно кодировка устанавливается в UTF-8, а затем включается детектирование UTF-16.
См. также autoDetectUnicode() и setCodec().
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(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 (Byte Order Mark) перед записью любых данных в устройство. Если generate равно false, BOM не будет вставлен. Эту функцию нужно вызвать до записи любых данных. В противном случае она ничего не делает.
См. также generateByteOrderMark() и bom().
void QTextStream::setIntegerBase(int base)
Устанавливает основание целых чисел в base, как для чтения, так и для генерации чисел. base может быть 2 (двоичное), 8 (восьмеричное), 10 (десятичное) или 16 (шестнадцатеричное). Если base равно 0, QTextStream попытается определить основание, проанализировав данные в потоке. При генерации чисел QTextStream предполагает основание 10, если оно не задано явно.
См. также integerBase(), QString::number() и setNumberFlags().
void QTextStream::setLocale(const QLocale &locale)
Устанавливает локаль для этого потока на locale. Указанная локаль используется для преобразований между числами и их строковыми представлениями.
По умолчанию используется локаль C, которая является особым случаем — разделитель тысяч не используется по причинам обратной совместимости.
Эта функция была добавлена в Qt 4.5.
См. также locale().
void QTextStream::setNumberFlags(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(RealNumberNotation notation)
Устанавливает формат вещественных чисел на notation (SmartNotation, FixedNotation, ScientificNotation). При чтении и генерации чисел QTextStream использует это значение для определения форматирования вещественных чисел.
См. также realNumberNotation(), setRealNumberPrecision(), setNumberFlags() и setIntegerBase().
void QTextStream::setRealNumberPrecision(int precision)
Устанавливает точность вещественных чисел на precision. Это значение описывает количество знаков после запятой, которые QTextStream должен записать при генерации вещественных чисел.
Точность не может быть отрицательной. Значение по умолчанию равно 6.
См. также realNumberPrecision() и setRealNumberNotation().
void QTextStream::setStatus(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>>().
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<<(signed short i)
Записывает целое число i в поток, затем возвращает ссылку на QTextStream. По умолчанию число хранится в десятичном формате, но вы можете изменить основание, вызвав setIntegerBase().
См. также setFieldWidth() и setNumberFlags().
QTextStream &QTextStream::operator<<(unsigned short i)
Это перегруженная функция.
Записывает беззнаковое короткое целое i в поток.
QTextStream &QTextStream::operator<<(signed int i)
Это перегруженная функция.
Записывает целое число со знаком i в поток.
QTextStream &QTextStream::operator<<(unsigned int i)
Это перегруженная функция.
Записывает беззнаковое целое i в поток.
QTextStream &QTextStream::operator<<(signed 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)
Это перегруженный метод.
Записывает двойное значение f в поток.
QTextStream &QTextStream::operator<<(const QString &string)
Записывает строку string в поток и возвращает ссылку на QTextStream. Строка сначала кодируется с помощью назначенного кодека (по умолчанию используется кодек QTextCodec::codecForLocale()), а затем записывается в поток.
См. также setFieldWidth() и setCodec().
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>>(signed 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>>(signed int &i)
Это перегруженный метод.
Сохраняет целое число в знаковом целом i.
QTextStream &QTextStream::operator>>(unsigned int &i)
Это перегруженный метод.
Сохраняет целое число в беззнаковом целом i.
QTextStream &QTextStream::operator>>(signed long &i)
Это перегруженный метод.
Сохраняет целое число в знакомом длинном целом i.
QTextStream &QTextStream::operator>>(unsigned long &i)
Это перегруженный метод.
Сохраняет целое число в беззнаковом длинном целом i.
QTextStream &QTextStream::operator>>(qlonglong &i)
Это перегруженный метод.
Сохраняет целое число в qlonglong i.
QTextStream &QTextStream::operator>>(qulonglong &i)
Это перегруженный метод.
Сохраняет целое число в qulonglong i.
QTextStream &QTextStream::operator>>(float &f)
Читает вещественное число из потока и сохраняет его в f, затем возвращает ссылку на QTextStream. Число приводится к соответствующему типу. Если в потоке не найдено вещественное число, 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 вместо этого.
Связанные не члены
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' << 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.9/qtextstream.html