Failų nuskaitymas Spausdinti
( 15 Votes )

Parašė Aurimas Šimkus   

Tarkime turime failą su duomenimis:

Pateiksime du pavyzdžius.

Pirmasis pvz. programos, nuskaitančios priskirtojo failo visas eilutes ir jas išspausdinančios konsoliniame lange:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{    
 string eilute;
 ifstream Failas("duom.txt");     //atidaromas failas skaitymui    

 while (!Failas.eof())
 {
  getline(Failas, eilute);    
  cout << eilute << endl;
 }    

 Failas.close();     //failas uždaromas
 return 0;
}

9-13 eilutėje yra vykdomas ciklas, kuris nuskaito kiekvieną failo eilutę. funkcija eof() įgyja reikšmę TRUE, kai yra pasiekiama failo pabaiga. Taigi ciklo sąlyga - kol nepasiekta failo pabaiga, tol vykdyti. 11 eilutėje esanti f-ja getline(failo_vardas, kintamasis) nuskaito vieną failo eilutę ir ją priskiria kintamajam. Tik priskyrus kintamajam naują reikšmę, ji yra išspausdinama ekrane.

Programos vykdymo pavyzdys:

 

Pastaruoju atveju, kintamajam yra priskiriama ištisa eilutė. Tačiau kiekvieną eilutę galime išskaidyti atskirais kintamaisiais. Pateikiame antrąjį pavyzdį:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{    
 int a, b, c;     //kintamieji skaičiams 1, 2, 3
 char s1, s2;     //kintamieji raidėms a ir b
 string eilute;     //kintamasis visai eilutei

 ifstream Failas("duom.txt");    

 getline(Failas, eilute);     //nuskaitoma pirma eilute ir priskiriama kintamajam    
 cout << eilute << endl;    

 Failas >> a >> b >> c;     //antroje failo eilutėje skirtingiems kintamiesiems nuskaitomi trys skaičiai
 cout << a << b << c << endl;

 Failas >> s1 >> s2;     //trečioje failo eilutėje dviems kintamiesiems nuskaitomi du simboliai
 cout << s1 << s2 << endl;

 Failas.close();
 return 0;
}

13 ir 15 eilutėse pateikiamas duomenų nuskaitymas kiekvienam kintamajam. Taip pat kaip ir skaityme iš klaviatūros (cin), skaitymui iš failo naudojamas operatorius >>.

Programos vykdymo pavyzdys: