Запис даних
Наступна програма демонструє запис символа цілого числа, числа типу double та двох об’єктів типу string в дисковий файл. Вивід на екран не передбачений. далі приведено лістінг програми 26.2
#include<fstream>
#include<iostream>
#include<string>
#include<conio>
using namespace std;
int main()
{
char ch='x';
int j=77;
double d=6.02;
string str1="Kafka ";
string str2="Proust ";
ofstream outfile("fdata.txt"); //створити обєкт
outfile << ch
<< ' '
<< j
<< ' '
<< d
<< ' '
<< str1
<< ' '
<< str2;
cout <<"File zapysanyj\n";
getch();
return 0;
}
Програма 26.2
Тут ми визначили об’єкт outfile в якості компоненту класу ofstream. В той же час ми ініціалізували його файлом fdata.txt. Ініціалізація резервує для дискового файлу з даним іменем різні ресурси і одержує доступ (чи відкриває файл) до нього. Якщо файл не існує, він створюється. Якщо ж файл вже існував, то він переписується: нові дані в ньому заміняють старі. Об’єкт outfile веде себе подібно до cout з попередніх програм, тому можна використовувати операцію вставки (<<) для виведення змінних будь-якого стандартного типу в файл. Все це працює тому, що оператор вставки перезавантажений в класі ostream, який є батьківським для ofstream.
Коли програма завершується, об’єкт outfile викликає свій деструктор, який закриває файл, так що нам не доведеться це робити явно.
Є кілька потенційних проблем з форматованим виводом у дискові файли. По-перше, потрібно розділити числа (77 та 6,02, наприклад) нечисловими символами. оскільки вони зберігаються у вигляді послідовності символів, а не у вигляді полів фіксованої довжини, це єдиний шанс довідатися при видобуванні, де закінчується одне і починається інше число. По-друге, між рядками повинні бути розділювачі – з тих же причин. Це означає, що всередині рядка не може бути пропусків. В цьому прикладі для розділювання даних ми використали пропуск в обох випадках.
Подивитися на результати роботи програми можна відкривши файл fdata.txt за допомогою будь-якого текстового редактора, наприклад, WORDPAD.
Дата добавления: 2015-08-26; просмотров: 550;