OpenSCADAWiki:
Roman Savochenko
/
C Short All
/
part2
/part16
...
Home
|
Index
|
Changes
|
Comments
|
Users
|
Registration
|
Login
:
Password:
====2.16 Потоковые функции языка C++==== Потоковые функции языка C++ представляют собой подборку классов предоставляющих функции для работы с основными потоковыми устройствами системы. Для подключения потоковых функций (классов) необходимо включать следующие заголовочные файлы: **<iostream>** -- Включает описание классов: cin, cout, cerr, clog. **<iomanip>** -- Включает информацию для обработки форматированного ввода-вывода; **<fstream>** -- Включает информацию для выполнения операций с файлами; **<strstream>** -- Включает информацию для выполнения операций со строкой. Потоковые классы имеют следующую иерархию: * **istream ==> ios;** * **ostream ==> ios;** * **iostream ==> istream, ostream;** * **ifstream ==> istream;** * **ofstream ==> ostream;** * **fstream ==> iostream;** * **strstream ==> iostream;** Примеры использования: %%(php)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|Флэшировать потоки после операции.|| |#
Please type the word you read in the image: