Четене и запис в текстови файлове.


*** В заглавния файл fstream са дефинирани обекти, функции и операции за работа с файлове.

А) Файл за четене.
* дефиниране на файлова променлива за четене - обект от класа ifstream:
ifstream inp_data;
* отваряне на файл от текущата директория с име input.dat:
inp_data.open("input.dat");
* четене от файл на:
 - цели числа и числа с плаваща точка
   int n;
   double x;
   inp_data >> n >> x;
 - низове
   string s;
   inp_data >> s;        // чете до разделител
   getline(inp_data, s); // чете цял ред
 - символи
   char ch;
   inp_data.get(ch);    // чете един символ
   inp_data.unget();    // връща последния прочетен символ в буфера
* затваряне на файл
   inp_data.close();

// readf.cpp
#include <iostream>
#include <fstream>             /* включване на заглавен файл */
#include <string>
using namespace std;
int main()
{  ifstream in_data; /* дефиниране на файлова променлива за четене */
   in_data.open("readf.txt");  /* отваряне на файла input.txt */

   string s1, s2;
   getline(in_data, s1);       /* четене на ред */
   in_data >> s2;              /* четене на дума */

   int n;
   double x;
   in_data >> n >> x;          /* четене на числови данни */

   char ch;
   while (!in_data.eof())
   in_data.get(ch);            /* четене на символ */

   in_data.close();            /* затваряне на файла */
   cout << s1 << endl << s2 << " "
        << n << " " << x << " " << ch << endl;
   return 0;
}

Файл readf.txt:
many happy words
one_word  123  9.98  N

many happy words
one_word  123  9.98  N

Б) Файл за писане.
* дефиниране на файлова променлива за писане - обект от класа ofstream:
   ofstream out_data;
* отваряне на файл
   out_data.open("output.dat");
* писане във  файл с:
 - изходен поток
   int n = 2;
   double x = 1.5;
   string s = " Hello";
   out_data << n << "  " << x << s;
 - член-функция
   char ch = 'A';
   out_data.put(ch);
* затваряне на файл
   out_data.close();

// writef.cpp
#include <iostream>
#include <fstream>             /* включване на заглавен файл */
#include <string>
using namespace std;
int main()
{  ofstream out_data; /* дефиниране на файлова променлива за писане */
   out_data.open("writef.txt");  /* отваряне на файла writef.txt */

   string s = "Hello";
   out_data << s << endl; /* писане на низ */
   int n = 5;
   double x = 5.5;
   out_data << n << " " << x << " "; /* писане на числови данни */
   char ch = 'T';
   out_data.put(ch); /* писане на символ */

   out_data.close();             /* затваряне на файла */
   return 0;
}

Файл writef.txt:
Hello
5 5.5 T