Методичні вказівки до виконання практичних та лабораторних робіт з курсу «Обчислювальна техніка та програмування», страница 24

       Мнемоніка режиму береться з перерахованого значення  open_mode у ios:

     class ios {

     public:

        enum open_mode { in, out, app, ate, nocreate, noreplace };

     };

       Оператор

     ofstream ofile("data",ios::app|ios::nocreate);

спробує відкрити файл DATA на висновок у режимі append; якщо файл не існує, це призведе до невдачі.  Інформація про цю невдачу  буде позначена станом помилки ofile.  У випадку вдалого завершення потік ofile буде доданий до файлу DATA.  Клас fstream (похідний від двох класів ifstream і ofsrtream) може використовуватися для створення файлів, що одночасно дозволяють і запровадження, і висновок: 

     fstream inout("data:,ios::in|ios::out);

     inout << i;

     ...

     inout >> j;

       Для визначення поточної позиції  "get"  або  поточної  позиції  "put" файлу можна скористатися функціями tellg і tellp; вони визначають положення в потоці, де буде виконана така  операція висновку або запровадження:

     streampos cgp = inout. tellg(); // cgp - це поточна позиція get 

  де  streampos  це  typedef  у fstream.  h. Функції-компоненти seekg і seekp можуть скидати значення поточної позиції get і put: 

     inout. seekg(cp);   // установка в cp поточної позиції "put" 

       Варіанти seekp і seekg дозволяють одержати шукані  позиції  у відносних зсувах:

     inout. seekg(5,ios::beg);  // переміщення cp на 5 байт від початку 

     inout. seekg(5,ios::cur);  // переміщення cp на 5 байт вперед 

     inout. seekp(5,ios::end);  // переміщення cp на 5 байт до кінця 

       Вам може знадобитися роздрукувати і вивчити комменовані файли заголовка, щоб дізнатися, як взаємозалежні різноманітні  класи потоків і як об'являються їхні функції компоненти.

При використанні бібліотеки класів С++ операції відкриття, створення і закриття, виконуються при створенні об'єктів вихідного (вхідного) файлового потоку. Наприклад:

#include <iostream. h>

#include <fstream. h>//ofstream

#include <stdlib. h>//містить функцію exit

int main ()

{char sim;

ofstream myfile ("d:\oop\myfile. txt", ios:: out);//створюється файл, старий стирається

if (! myfile)

{

cerr<<" помилка відкриття myfile. txt'<<endl;

exit (1);

}

for (int i=1; i<10; i++) {

cout<<'введіть символ'<<endl;

cin>>sim;

myfile. put (sim);}

myfile<<endl;

return 0;

}

#include <iostream. h>

//#include <fstream. h>//ofstream

#include <fstream. h>

#include <stdlib. h>//містить функцію exit

int main ()

{char sim;

ifstream myfile ("d:\oop\myfile. txt", ios:: in);

if (! myfile)

{

cerr<<" помилка відкриття myfile. txt"<<endl;

exit (1);

}

int nsim=0, kolstr=0;

while (myfile. get (sim)) {

if (sim==char ("\n)")

kolstr++;

else

nsim++;

cout. put (sim);}

cout<<endl<<”kolstr=”<< kolstr<<”nsim=”<<nsim<<endl;

cin>>nsim;

return 0;

}

#include <iostream. h>

#include <fstream. h>//ofstream

#include <stdlib. h>//містить функцію exit

int main ()

{char sim;

ofstream myfile ("d:\oop\myfile. txt", ios:: in);//відкривається файл для читання

if (! myfile)

{

cerr<<" помилка відкриття myfile. txt"<<endl;

exit (1);

}

for (int i=1; i<10; i++) {

cout<<'введіть символ'<<endl;