Запись в текстовый файл
Для записиси в файл его также необходимо открыть на запись.
#include
// открытие бинарного файла для записи (для примера,
// одновременно установлен флаг и для чтения также)
fstream file( "input-output-file.txt", fstream::binary | fstream::out | fstream::in);
//или
ofstream file( "output-file.txt
"); // открытие текстового файла для записи
Запись в файл осуществляется оператором '<<'. Для форматирования вывода
можно воспользоваться манипуляторами формата из заголовка
#include
#include
#include
ofstream file("dat/example-005-
out.txt"); // файл лежит в подкаталоге 'dat/'.
//
Файл будет перезаписываться при каждом запуск программы.
//
Используйте режим fstream::app для добавления в конец
if(file)
{
struct Record
{
float p;
int i;
string s;
} rec;
rec.p = 3.14;
rec.s = "record No";
for(int i=0; i<10; i++)
{
rec.i = i;
rec.p *= i + 1;
file << rec.s << setw(2) << setfill('_') << rec.i <<
": floating number=" << scientific << rec.p << endl;
}
}
46
В примере используются манипуляторы 'setw', 'setfill' и флаг 'scientific'.
Манипуляторы действуют до своей отмены кроме манипулятора 'setw', который
влияет только на следующий вывод в поток. Список доступных манипуляторов:
•
setbase -
установить основание системы счисления
cout << setbase(16); //
то же самое: 'setbase(hex)' - шестнадцетиричное число
cout << setbase(10);
// то же самое: 'setbase(dec)' - десятичное число
cout << setbase(8);
// то же самое: 'setbase(oct)' - восьмеричное число
•
setprecision -
установить точность
cout << setprecision(4);
// число значащих цифр в вещественном числе
•
setw -
установить ширину поля
cout << setw(10);
// установить ширину поля следующего вывода в поток
•
setfill -
установить символ для заполнения полей
cout << setfill('0');
// заполнение нулями до ширины поля
•
get_money -
считать денежное значение
•
put_money -
записать денежное значение
long double price;
cin >> get_money(price);
•
get_time -
прочесть значение времени
•
put_time -
записать значение времени
tm
now; // структура 'tm' определена в
cin >> get_time(&now);
•
setiosflags/resetiosflags -
установить и сбросить флаги форматов.
Пример:
cout << setiosflags (scientific | uppercase);
C
писок и назначение флагов:
* boolalpha -
прочитать/записать булевское значение как текст 'true' или 'false'
* showbase -
при записи указать основание системы счисления числа (например,
0xAFCD)
* showpoint -
при записи в вещественных числах всегда ставить точку
* showpos -
при записи у неотрицательных чисел всегда ставить '+'
* skipws -
пропускать пробелы при вводе
* unitbuf -
производить вывод данных буфера после каждой записи в поток
* uppercase -
при записи выводить строки прописными символами
* dec -
чтение/запись в десятичном формате
* hex -
чтение/запись в шестнадцатеричном формате
* oct -
чтение/запись в восьмеричном формате
* fixed -
запись вещественных чисел в формате с фиксированной точкой
(0.0001)
* scientific -
запись вещественных чисел в формате с фиксированной точкой
(1E-4)
* internal -
заполнение символом, заданным 'setfill', внутри поля (-***1)
* left -
выравнивание по левой кромке поля (-1***)
* right -
выравнивание по правой кромке поля (***-1)
47
Do'stlaringiz bilan baham: |