FreeSource: Статьи/КраткоОбоВсём/Clang/part2/part16

2.16 Потоковые функции языка C++

Потоковые функции языка C++ представляют собой подборку классов предоставляющих функции для работы с основными потоковыми устройствами системы. Для подключения потоковых функций (классов) необходимо включать следующие заголовочные файлы:

<iostream> — Включает описание классов: cin, cout, cerr, clog.

<iomanip> — Включает информацию для обработки форматированного ввода-вывода;

<fstream> — Включает информацию для выполнения операций с файлами;

<strstream> — Включает информацию для выполнения операций со строкой.

Потоковые классы имеют следующую иерархию:

Примеры использования:

cout << "Сообщение" << endl;        \\печать строки

cout << "Address"   << (void *)ptr; \\указатель

cin.tie(&cout);     \\связывание, для печати 

                    \\приглашения ранее запроса

cin.tie(NULL);      \\развязывание потока

ofstream outClnt("client.dat",ios::out); \\открыть

                    \\файл для записи

ifstream inClnt("client.dat",ios::in);   \\открыть 

                    \\файл для чтения

strstream ss

ss << "TEXT" << 23 << ends;

String msg( ss.str() );

Операции взятия из потока возвращают “false” при вводе признака конца файла. Для расширенной манипуляций с потоками допускается определение манипуляторов пользователя в виде ostream &tab(ostream &output) { return output << \t; }

2.16.1 Манипуляторы потока

endl <iostream>

ostream& endl(ostream& outs);

Перевод курсора на следующую строку;

ends <iostream>

ostream& ends(ostream& outs);

Вывести нулевой байт (символ конца строки);

2.16.2 Компонентные функции класса ios <iostream>

bad

int bad();

При ошибке возвращает ненулевое значение.

bitalloc

static long bitalloc();

Возвращает установки флагов. Полученное значение может быть использовано для очистки, установки или проверки флагов.

clear

void clear(int = 0);

Устанавливает состояние потока (обнулить или установить указанные биты).

eofbit – признак конца файла;

failbit – ошибка форматирования, но символы не утеряны;

badbit – потеря данных;

goodbit – ошибок нет.

eof

int eof();

Возвращает ненулевое значение, если имеет место условие конца файла (EOF).

fail

int fail();

Возвращает ненулевое значение, если операция обмена с потоком терпит неудачу.

fill

char fill();

char fill(char);

Устанавливает символ заполнения потока. Возвращает старое значение символа заполнения.

flags

long flags();

long flags(long);

Устанавливает флаги форматирования. Возвращает ранее установленное значение флагов.

good

int good();

Возвращает ненулевое значение если не установлен ни один флаг состояния (ошибок нет).

init

void init(streambuf *);

Связывает ios с указанным <streambuf>.

precision

int precision();

int precision(int);

Устанавливает точность вещественных чисел. Возвращает предыдущее значение точности.

rdbuf

streambuf* rdbuf();

Возвращает указатель на буфер (объект класса <bufstream>), связанный с потоком.

rdstate

int rdstate();

Возвращает текущее состояние потока.

setf

long setf(long);

long setf(long setbits, long field);

Устанавливает флаги по значению параметра или сбрасывает те биты состояния, которые отмечены в <field>, и устанавливает указанные в <setbits>. Возвращает предыдущие значения флагов.

setstate

void setstate(int);

Устанавливает указанные биты состояния.

tie

ostream* tie();

ostream* tie(ostream *);

Организует поток, взаимосвязанный с потоком, на который указывает <ostream*>. Возвращает указатель на взаимосвязанный предыдущий поток, если такой есть.

unself

long unself(long);

Очищает указанные биты состояния потока. Возвращает предыдущее значение.

width

int width();

int width(int);

Устанавливает ширину. Возвращает предыдущее значение.

xalloc

static int xalloc();

????

2.16.3 Компонентные функции класса ostream <iostream>

flush

ostream& flush(ostream& outs);

Сброс строки из буферов в поток;

put

cout.put(char c);

ostream& put(char c);

Вставить в поток символ <c>

seekp

ostream& seekp(long beg);

ostream& seekp(long beg, seek_dir);

Перемещает указатель текущей позиции выходного потока.

tellp

long tellp();

Возвращает текущую позицию указателя записи для выходного потока.

write

oatream& write(const signed char *string, int n);

ostream& write(const unsigned char *string, int n);

Помещает в выходной поток <n> символов из массива, на который указывает <string>. Нуль-символы включаются в число переносимых символов.

2.16.4 Компонентные функции класса istream <iostream>

gcount

int gcount;

Возвращает число символов, извлеченных из потока последним обращением.

get

istream& get(char& c);

istream& get(char* ptr, int len, char delim = '$\backslash $n');

istream& get(streambuf& sb, char delim = '$\backslash $n');

Извлекает из входного потока символы.

getline

istream& getline(signed char, int sizeof(char), '$\backslash $n');

Тоже что и get, но символ-разделителя, также, помещается в принятую строку символов.

ignore

istream& ignore(int n = 1,int delim = EOF);

Пропускает до n символов входного потока. Останавливается, если встретился разделитель (второй параметр), по умолчанию равный EOF.

peek

int peek();

Извлекает следующий символ из входного потока не удаляя его в потоке.

putback

istream& putback(char);

Помещает символ назад во входной поток.

read

istream& read(signed char *string, int n);

istream& read(unsigned char *string, int n);

Извлекает из входного потока группу символов <n> и помещает их в массив <string>.

seekg

istream& seekg(long beg);

istream& seekg(long beg, seek_dir);

Перемещает указатель чтения входного потока.

tellg

long tellg();

Возвращает текущую позицию указателя чтения входного потока.

Таблица 14. Флаги класса ios, управляющие форматированием ввода/вывода (манипуляторы потока)

ИмяНазначение
appЗаписать все данные в конец файла.
ateПереместиться в конец исходного открытого файла. Данные могут быть записаны в любое место файла.
binaryОткрыть файл для двоичного ввода или вывода.
decДесятичная система счисления (ОСС=10).
fixedИспользовать формат 123.45 для вывода вещественных чисел (с фиксированной точкой).
hexШестнадцатеричная система счисления (ОСС = 16).
inОткрыть файл для ввода.
internalПоместить разделительные символы после знака или основания системы счисления (ОСС).
leftВыравнивать по левой стороне поля.
octВосьмеричная система счисления (ОСС= 8).
outОткрыть файл для вывода.
rightВыравнивать по правой стороне поля.
setfill(n)Установка заполняющего символа <n>.
scientificИспользовать формат 1.2345Е2 для вывода вещественных чисел (экспоненциальная или научная нотация).
setbase(n)Установка значения основания <n>.
setprecision(n)Установка точности <n>.
setw(n)Установка ширины поля <n>.
showbaseУказывать ОСС при выводе.
showpointПечатать десятичную точку и следующие за ней нули при выводе вещественных чисел.
showposДобавлять '+' при выводе положительных чисел.
skipwsИгнорировать символы разделители при вводе.
stdioФлэшировать stdout, sfcderr после операции.
truncОтбрасывать содержимое файла, если он существует.
uppercaseШестнадцатеричные цифры печатать в верхнем регистре.
unitbufФлэшировать потоки после операции.