Класс QTextStream
Класс QTextStream предоставляет удобный интерфейс для чтения и записи текста. Подробнее...
| Заголовок: | #include <QTextStream> |
| qmake: | QT += core |
Примечание: Все функции в этом классе являются реентерабельными.
Открытые типы
| Перечисление | ВыравниваниеПоля { ВыравниваниеСлева, ВыравниваниеСправа, ВыравниваниеПоЦентру, ВыравниваниеПоБухгалтерскомуСтилю } |
| Перечисление | ФлагиЧисла { ПоказатьБазу, ПринудительнаяТочка, ПринудительныйЗнак, ВерхнийРегистрБазы, ВерхнийРегистрЦифр } |
| Флаги | ФлагиЧисел |
| Перечисление | НотацияВещественногоЧисла { ЭкспоненциальнаяНотация, ФиксированнаяНотация, ИнтеллектуальнаяНотация } |
| Перечисление | Состояние { ОК, ЧтениеЗаПределами, СбойДанныхПриЧтении, НеудачнаяЗапись } |
Открытые функции
| QTextStream() | |
| QTextStream(QIODevice *device) | |
| QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite) | |
| QTextStream(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite) | |
| QTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite) | |
| QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly) | |
| virtual | ~QTextStream() |
| bool | atEnd() const |
| bool | autoDetectUnicode() const |
| QTextCodec * | codec() const |
| QIODevice * | device() const |
| QTextStream::FieldAlignment | fieldAlignment() const |
| int | fieldWidth() const |
| void | flush() |
| bool | generateByteOrderMark() const |
| int | integerBase() const |
| QLocale | locale() const |
| QTextStream::NumberFlags | numberFlags() const |
| QChar | padChar() const |
| qint64 | pos() const |
| QString | read(qint64 maxlen) |
| QString | readAll() |
| QString | readLine(qint64 maxlen = 0) |
| bool | readLineInto(QString *line, qint64 maxlen = 0) |
| QTextStream::RealNumberNotation | realNumberNotation() const |
| int | realNumberPrecision() const |
| void | reset() |
| void | resetStatus() |
| bool | seek(qint64 pos) |
| void | setAutoDetectUnicode(bool enabled) |
| void | setCodec(QTextCodec *codec) |
| void | setCodec(const char *codecName) |
| void | setDevice(QIODevice *device) |
| void | setFieldAlignment(QTextStream::FieldAlignment mode) |
| void | setFieldWidth(int width) |
| void | setGenerateByteOrderMark(bool generate) |
| void | setIntegerBase(int base) |
| void | setLocale(const QLocale &locale) |
| void | setNumberFlags(QTextStream::NumberFlags flags) |
| void | setPadChar(QChar ch) |
| void | setRealNumberNotation(QTextStream::RealNumberNotation notation) |
| void | setRealNumberPrecision(int precision) |
| void | setStatus(QTextStream::Status status) |
| void | setString(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite) |
| void | skipWhiteSpace() |
| QTextStream::Status | status() const |
| QString * | string() const |
| QTextStream & | operator<<(QChar c) |
| QTextStream & | operator<<(char c) |
| QTextStream & | operator<<(short i) |
| QTextStream & | operator<<(unsigned short i) |
| QTextStream & | operator<<(int i) |
| QTextStream & | operator<<(unsigned int i) |
| QTextStream & | operator<<(long i) |
| QTextStream & | operator<<(unsigned long i) |
| QTextStream & | operator<<(qlonglong i) |
| QTextStream & | operator<<(qulonglong i) |
| QTextStream & | operator<<(float f) |
| QTextStream & | operator<<(double f) |
| QTextStream & | operator<<(const QString &string) |
| QTextStream & | operator<<(QLatin1String string) |
| QTextStream & | operator<<(const QStringRef &string) |
| QTextStream & | operator<<(const QByteArray &array) |
| QTextStream & | operator<<(const char *string) |
| QTextStream & | operator<<(const void *ptr) |
| QTextStream & | operator>>(QChar &c) |
| QTextStream & | operator>>(char &c) |
| QTextStream & | operator>>(short &i) |
| QTextStream & | operator>>(unsigned short &i) |
| QTextStream & | operator>>(int &i) |
| QTextStream & | operator>>(unsigned int &i) |
| QTextStream & | operator>>(long &i) |
| QTextStream & | operator>>(unsigned long &i) |
| QTextStream & | operator>>(qlonglong &i) |
| QTextStream & | operator>>(qulonglong &i) |
| QTextStream & | operator>>(float &f) |
| QTextStream & | operator>>(double &f) |
| QTextStream & | operator>>(QString &str) |
| QTextStream & | operator>>(QByteArray &array) |
| QTextStream & | operator>>(char *c) |
Связанные нечлены
| QTextStream & | bin(QTextStream &stream) |
| QTextStream & | bom(QTextStream &stream) |
| QTextStream & | center(QTextStream &stream) |
| QTextStream & | dec(QTextStream &stream) |
| QTextStream & | endl(QTextStream &stream) |
| QTextStream & | fixed(QTextStream &stream) |
| QTextStream & | flush(QTextStream &stream) |
| QTextStream & | forcepoint(QTextStream &stream) |
| QTextStream & | forcesign(QTextStream &stream) |
| QTextStream & | hex(QTextStream &stream) |
| QTextStream & | left(QTextStream &stream) |
| QTextStream & | lowercasebase(QTextStream &stream) |
| QTextStream & | lowercasedigits(QTextStream &stream) |
| QTextStream & | noforcepoint(QTextStream &stream) |
| QTextStream & | noforcesign(QTextStream &stream) |
| QTextStream & | noshowbase(QTextStream &stream) |
| QTextStream & | oct(QTextStream &stream) |
| QTextStreamManipulator | qSetFieldWidth(int width) |
| QTextStreamManipulator | qSetPadChar(QChar ch) |
| QTextStreamManipulator | qSetRealNumberPrecision(int precision) |
| QTextStream & | reset(QTextStream &stream) |
| QTextStream & | right(QTextStream &stream) |
| QTextStream & | scientific(QTextStream &stream) |
| QTextStream & | showbase(QTextStream &stream) |
| QTextStream & | uppercasebase(QTextStream &stream) |
| QTextStream & | uppercasedigits(QTextStream &stream) |
| QTextStream & | ws(QTextStream &stream) |
Подробное описание
Класс QTextStream предоставляет удобный интерфейс для чтения и записи текста.
QTextStream может работать с QIODevice, QByteArray или QString. Используя операторы потоковой передачи QTextStream, вы можете удобно читать и записывать слова, строки и числа. Для генерации текста, QTextStream поддерживает параметры форматирования для выравнивания и заполнения полей, и форматирование чисел. Пример:
QFile data("output.txt");
if (data.open(QFile::WriteOnly | QFile::Truncate)) {
QTextStream out(&data);
out << "Result: " << qSetFieldWidth(10) << left << 3.14 << 2.7;
// writes "Result: 3.14 2.7 "
} Также часто используется QTextStream для чтения входных данных консоли и записи выходных данных консоли. QTextStream учитывает локаль и автоматически декодирует стандартный ввод с использованием правильного кодека. Пример:
QTextStream stream(stdin);
QString line;
while (stream.readLineInto(&line)) {
...
} Помимо использования конструкторов QTextStream, вы также можете установить устройство или строку, с которыми работает QTextStream, вызвав setDevice() или setString(). Вы можете перейти к позиции, вызвав seek(), и atEnd() вернёт true, когда больше нет данных для чтения. Если вы вызовете flush(), QTextStream очистит все данные из буфера записи в устройство и вызовет flush() на устройстве.
Внутри, QTextStream использует буфер на основе Юникода, а 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 — это typedef для QFlags<NumberFlag>. Он хранит комбинацию значений NumberFlag через оператор OR.
См. также 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.
Этот конструктор полезен для работы напрямую с обычными потоками ввода-вывода, основанными на 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 также учитывает свой внутренний буфер Unicode.
bool QTextStream::autoDetectUnicode() const
Возвращает true , если автоматическое определение Unicode включено, в противном случае возвращает false. Автоматическое определение Unicode включено по умолчанию.
См. также setAutoDetectUnicode() и setCodec().
QTextCodec *QTextStream::codec() const
Возвращает кодек, который в настоящее время назначен потоку.
См. также setCodec(), setAutoDetectUnicode() и locale().
QIODevice *QTextStream::device() const
Возвращает текущее устройство, связанное с QTextStream, или 0, если устройство не назначено.
См. также setDevice() и string().
QTextStream::FieldAlignment QTextStream::fieldAlignment() const
Возвращает текущее выравнивание поля.
См. также setFieldAlignment() и fieldWidth().
int QTextStream::fieldWidth() const
Возвращает текущую ширину поля.
См. также setFieldWidth().
void QTextStream::flush()
Очищает все данные в буфере, ожидающие записи в устройство.
Если QTextStream работает со строкой, эта функция ничего не делает.
bool QTextStream::generateByteOrderMark() const
Возвращает true , если QTextStream настроен на генерацию UTF BOM (Byte Order Mark) при использовании кодека UTF; в противном случае возвращает false. Генерация UTF BOM отключена по умолчанию.
См. также setGenerateByteOrderMark().
int QTextStream::integerBase() const
Возвращает текущую базу целых чисел. 0 означает, что база определяется при чтении, или 10 (десятичная), когда генерируются числа.
См. также setIntegerBase(), QString::number() и numberFlags().
QLocale QTextStream::locale() const
Возвращает локаль для этого потока. Локаль по умолчанию — C.
Эта функция была добавлена в Qt 4.5.
См. также setLocale().
QTextStream::NumberFlags QTextStream::numberFlags() const
Возвращает текущие флаги чисел.
См. также setNumberFlags(), integerBase() и realNumberNotation().
QChar QTextStream::padChar() const
Возвращает текущий символ заполнения.
См. также setPadChar() и setFieldWidth().
qint64 QTextStream::pos() const
Возвращает позицию устройства, соответствующую текущей позиции потока, или -1, если произошла ошибка (например, если устройство или строка отсутствуют или есть ошибка устройства).
Поскольку QTextStream буферизован, этой функции может потребоваться перейти к устройству для восстановления действительной позиции устройства. Эта операция может быть дорогостоящей, поэтому следует избегать вызова этой функции в узком цикле.
Эта функция была добавлена в Qt 4.2.
См. также seek().
QString QTextStream::read(qint64 maxlen)
Считывает не более maxlen символов из потока и возвращает прочитанные данные как QString.
Эта функция была добавлена в Qt 4.1.
См. также readAll(), readLine() и QIODevice::read().
QString QTextStream::readAll()
Считывает все содержимое потока и возвращает его как QString. Избегайте использования этой функции при работе с большими файлами, так как она потребляет значительное количество памяти.
Вызов readLine() предпочтительнее, если неизвестно, сколько данных доступно.
См. также readLine().
QString QTextStream::readLine(qint64 maxlen = 0)
Считывает одну строку текста из потока и возвращает её как QString. Максимальная длина строки задаётся maxlen. Если поток содержит строки длиннее этого значения, строки будут разделены после maxlen символов и возвращены частями.
Если maxlen равно 0, длина строк может быть любой.
Возвращаемая строка не содержит символов конца строки ("\n" или "\r\n"), поэтому вызов QString::trimmed() может быть излишним.
Если поток достиг конца файла, readLine() возвращает нулевую QString. Для строк или устройств, поддерживающих это, можно явно проверить конец потока с помощью atEnd().
См. также readAll() и QIODevice::readLine().
bool QTextStream::readLineInto(QString *line, qint64 maxlen = 0)
Считывает одну строку текста из потока в line. Если line равен 0, прочитанная строка не сохраняется.
Максимальная длина строки задаётся maxlen. Если поток содержит строки длиннее этого значения, строки будут разделены после maxlen символов и возвращены частями.
Если maxlen равно 0, длина строк может быть любой.
Полученная строка не содержит символов конца строки ("\n" или "\r\n"), поэтому вызов QString::trimmed() может быть излишним.
Если line имеет достаточную ёмкость для считываемых данных, функция может не потребовать выделения новой памяти. Благодаря этому она может быть быстрее, чем readLine().
Возвращает false если поток достиг конца файла или произошла ошибка; в противном случае возвращает true. Содержимое в line перед вызовом в любом случае отбрасывается.
Эта функция была добавлена в Qt 5.5.
См. также readAll() и QIODevice::readLine().
QTextStream::RealNumberNotation QTextStream::realNumberNotation() const
Возвращает текущий формат представления вещественного числа.
См. также setRealNumberNotation(), realNumberPrecision(), numberFlags() и integerBase().
int QTextStream::realNumberPrecision() const
Возвращает текущую точность вещественного числа, или количество знаков после запятой, которые QTextStream запишет при генерации вещественных чисел.
См. также setRealNumberPrecision(), setRealNumberNotation(), realNumberNotation(), numberFlags() и integerBase().
void QTextStream::reset()
Сбрасывает параметры форматирования QTextStream, возвращая его в исходное состояние. Устройство, строка и любые буферизованные данные остаются неизменными.
void QTextStream::resetStatus()
Сбрасывает состояние текстового потока.
Эта функция была добавлена в Qt 4.1.
См. также QTextStream::Status, status() и setStatus().
bool QTextStream::seek(qint64 pos)
Перемещает указатель на позицию pos в устройстве. Возвращает true при успехе; в противном случае возвращает false.
void QTextStream::setAutoDetectUnicode(bool enabled)
Если enabled истинно, 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(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 (Byte Order Mark) перед записью любых данных в устройство. Если 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, или 0, если строка не назначена.
См. также setString() и device().
QTextStream &QTextStream::operator<<(QChar c)
Записывает символ c в поток, затем возвращает ссылку на QTextStream.
См. также setFieldWidth().
QTextStream &QTextStream::operator<<(char c)
Это перегруженная функция.
Преобразует c из ASCII в QChar, затем записывает его в поток.
QTextStream &QTextStream::operator<<(short i)
Записывает целое число i в поток, затем возвращает ссылку на QTextStream. По умолчанию число записывается в десятичной форме, но вы также можете установить основание, вызвав setIntegerBase().
См. также setFieldWidth() и setNumberFlags().
QTextStream &QTextStream::operator<<(unsigned short i)
Это перегруженная функция.
Записывает беззнаковое короткое целое i в поток.
QTextStream &QTextStream::operator<<(int i)
Это перегруженная функция.
Записывает целое число со знаком i в поток.
QTextStream &QTextStream::operator<<(unsigned int i)
Это перегруженная функция.
Записывает беззнаковое целое число i в поток.
QTextStream &QTextStream::operator<<(long i)
Это перегруженная функция.
Записывает целое число со знаком i в поток.
QTextStream &QTextStream::operator<<(unsigned long i)
Это перегруженная функция.
Записывает беззнаковое целое число i в поток.
QTextStream &QTextStream::operator<<(qlonglong i)
Это перегруженная функция.
Записывает i в поток.
QTextStream &QTextStream::operator<<(qulonglong i)
Это перегруженная функция.
Записывает i в поток.
QTextStream &QTextStream::operator<<(float f)
Записывает вещественное число f в поток, затем возвращает ссылку на QTextStream. По умолчанию QTextStream сохраняет его с помощью SmartNotation с точностью до 6 знаков. Вы можете изменить текстовое представление вещественных чисел, которое QTextStream будет использовать, вызвав setRealNumberNotation(), setRealNumberPrecision() и setNumberFlags().
См. также setFieldWidth(), setRealNumberNotation(), setRealNumberPrecision() и setNumberFlags().
QTextStream &QTextStream::operator<<(double f)
Это перегруженная функция.
Записывает двойное f в поток.
QTextStream &QTextStream::operator<<(const QString &string)
Записывает строку string в поток и возвращает ссылку на QTextStream. Строка сначала кодируется с помощью заданного кодека (по умолчанию используется QTextCodec::codecForLocale()), а затем записывается в поток.
См. также setFieldWidth() и setCodec().
QTextStream &QTextStream::operator<<(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)
Это перегруженный метод.
Сохраняет целое число в 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' << 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/archives/qt-5.11/qtextstream.html