setfill(int n) - установливает символ-заполнитель; этим символом выводимое значение будет дополняться до необходимой ширины;
setprecision(int n) - установливает количество цифр после запятой (для вещественных чисел);
setbase(int n) -установливает систему счисления для вывода чисел; n может принимать значения 0, 2, 8, 10, 16, причем 0 означает систему счисления по умолчанию, т.е. 10.
Манипуляторы просто выводят в выходной поток.
Аналогично используются манипуляторы с параметрами. Вывод числа с разным количеством цифр после запятой:
double x;
// вывести число в поле общей шириной
// 6 символов (3 цифры до запятой,
// десятичная точка и 2 цифры после запятой)
cout << setw(6) << setprecision(2) << fixed << x << endl;
При вводе используют все вышеперечисленные манипуляторы кроме endl и ends. Манипулятор ws используют только при вводе. Он переключает вводимый поток в такой особый режим, при котором все пробелы (табуляция, перевод строки, перевод каретки и перевод страницы) будут введены. По умолчанию эти символы являются разделителями между атрибутами ввода.
2.1.4 Строковые потоки
Класс strstream автоматически выделяет нужное количество памяти для хранения строк.
Когда программа обращается к конкретной хранимой в объекте строке, используя метод str (), объект не контролирует память, следовательно, при уничтожении объекта память не освободится. Чтобы память освободилась, следует использовать метод rdbuf()->freeze(0).
2.1.5 Ввод-вывод файлов
Осуществлять ввод-вывод файлов может из стандартных функций библиотеки Си (функции низкого уровня) и, используя потоки ввода-вывода.
Файл является последовательностью байтов. Чтение или запись файлов всегда выполняются последовательно, т.е. всегда определяется текущая позиция, с нее будет выполняться следующая операция.
При прямом доступе операции ввода-вывода выполняются не последовательно, а в произвольном порядке. При написании программ на языке Си++ возможность прямого доступа обеспечена тем, что текущую позицию чтения или записи можно установить явно.
Классы ofstream (вывод) и ifstream (ввод) в Си++ используются для ввода-вывода файлов, они выводятся из класса fstream. Сами операции ввода-вывода выполняются так же, как и для других потоков – операции >> и << определены для класса fstream как "ввести" и "вывести" соответствующее значение.
Если требуется вывести информацию в файл нужно определить вид файла, в который будем выводить информацию. Для этого используют конструктор класса ofstream в виде:
ofstream(const char* szName,
int nMode = ios::out,
int nProt = filebuf::openprot);
Обязательным аргументом в данной ситуации является первый аргумент (имя выходного файла). За тем задается режим, в котором будет открыт поток. Этот аргумент – битовое ИЛИ следующих величин:
ios::app - данные будут добавлены в конец файла, даже если текущая позиция была перед этим перемещена;
ios::ate - текущая позиция будет помещена в конец файла, но запись произойдет в текущую позицию;
ios::in - поток будет создан для ввода; если файл существует, он сохранится;
ios::out - поток создан для вывода (режим по умолчанию);
ios::trunc - если файл существовал, его содержимое уничтожится, и длина файла будет равна нулю; режим действует по умолчанию, если не заданы ios::ate, ios::appили ios::in ;
ios::binary – двоичный вид ввода-вывода, по умолчанию используется текстовое представление данных.
Если мы хотим создать новый файл, тогда будет использован и третий аргумент, он и определит параметры нового файла.
В стандартном конструкторе создают поток вывода без аргументов, а потом используют метод open с такими же аргументами, как у предыдущего конструктора:
void open(const char* szName,
int nMode = ios::out,
int nProt = filebuf::openprot);
Когда поток уже создан, присоединен к определенному файлу, можно осуществить вывод. Выводят данные операцией <<, либо используя методы write или put.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.