6. Потоци
Четене и запис в текстови файлове
* Пренасочване на входа и изхода

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

   string s;
   in_data >> s;                            /* четене на дума */
   getline(in_data, s);                      /* четене на ред */
   int n;
   double x;
   in_data >> n >> x;                /* четене на числови данни */
   char ch;
   in_data.get(ch);                       /* четене на символ */

   in_data.close();                      /* затваряне на файла */
   return 0;
}
* Записване на файл:
#include <fstream>                 /* включване на заглавен файл */
int main()
{  ofstream out_data; /* дефиниране на файлова променлива за четене */
   out_data.open("output.txt");           /* отваряне на файла */

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

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

Текстови потоци

Аргументи от командния ред
* Стартиране на програмата prog:

C:\mydir\>prog -v input.dat

 * Текста на програмата:
int main(int argc, char * argv[])
{
 cout << argc;               /* брой на аргументите - 3 */
 cout << string(argv[0]);    /* prog */
 cout << string(argv[1]);    /* -v */
 cout << string(argv[2]);    /* input.dat */
 return 0;
}

Произволен достъп
-- файлове с променлива или фиксирана дължина на записа

-- включване на заглавен файл:
#include <fstream>

-- файлова променлива за четене и писане:
fstream fs;

-- преместване на позициите за четене и писане:
long n = 10;
fs.seekg(n, ios::beg);
fs.seekp(n, ios::beg);

-- намиране на текущите позициите за четене и писане:
long n;
n = fs.tellg();
n = fs.tellp();