<u style="display: none;">... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... <a href='http://www.ringtones-dir.com'>free ringtones</a> : [http://www.ringtones-dir.com download ringtones] – [HTTP://www.ringtones-dir.com download ringtones] : [nokia ringtones|http://www.ringtones-dir.com] – [nokia ringtones|HTTP://www.ringtones-dir.com] : http://www.ringtones-dir.com/download/ : ring tones : ringtones download : “samsung ringtones” http://www.ringtones-dir.com : [http://www.ringtones-dir.com|ringtones free] </u>====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 << ; }
endl <iostream>
ostream& endl(ostream& outs);
Перевод курсора на следующую строку;
ends <iostream>
ostream& ends(ostream& outs);
Вывести нулевой байт (символ конца строки);
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();
????
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>. Нуль-символы включаются в число переносимых символов.
gcount
int gcount;
Возвращает число символов, извлеченных из потока последним обращением.
get
istream& get(char& c);
istream& get(char* ptr, int len, char delim = '$ackslash $n');
istream& get(streambuf& sb, char delim = '$ackslash $n');
Извлекает из входного потока символы.
getline
istream& getline(signed char, int sizeof(char), '$ackslash $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 | Флэшировать потоки после операции. |