По умолчанию при связывании объекта ofstream с именем файла создается новый файл, если такового не было или удаляется содержимое существующего файла с таким же именем. Для изменения настроек используются флаги второго аргумента конструктора объекта ofstream:
1) ios::app(appеnd) добавляет данные в конец файла вместо удаления содержимого всего файла;
2) ios::ate(at end) переводит точку ввода в конец файла, но имеется возможность вводить данные в любом месте файла;
3) ios::trunc(truncate)- выбирается по умолчанию;
4) ios::nocreate- не выполняет операцию открытия, если файл не существует;
5) ios::noreplace- не выполняет операцию открытия, если файл уже существует.
Пример:
# include<fstream.h>
int main()
{ char filename[80];
char buffer[255];
cout<<”Please give filename”;
cin >>filename;
ifstream fin(filename);
if (fin) /*файл уже существует?
{ cout<<”Current content file\n”;
char ch;
while (fin.get(ch));
cout<<ch;
cout<<”End of file\n”; }
fin.close();
cout<<”\Opening”<<filename<<”In append mode\n”;
ofstream fout(filename,IOS::app);
if(!fout)
{ cout<<”Unable to open”<<filename<<”for oppening\n”;
return (1); }
cout<<”\n Enter text for file: ”;
cin.ignore(1,’\n’);
cin.getline(buffer,255);
fout<<buffer<<’\n’;
fout.close();
fin.open(filename); \\ открытие файла на чтение и
переопределение существующего объекта fin \\
if(!fin)
{ cout<<”Unable to open”<<filename<<”for reading\n”;
return (1); }
cout<<”\n This is content \n”;
char ch;
while (fin.get(ch));
cout<<ch;
cout<< “End of file \n”;
fin.close();
return 0; }