Plik tekstowy może zawierac liczby albo teksty albo łaczyć i liczby i teksty.
Pierwszy przypadek, który rozpatrzymy będzie zawiera tylko litery (słowa , badź zdania). Otworzymy plik i całe wiersze zapamiętamy jako zmienne typu string.
Plik otworzymy używając nagłówka biblioteki <fstream> oraz wykorzystując zmienną fstream. Ponieważ tylko wczytujemy tekst z pliku moglibyśmy użyć biblioteki <ifstream>. Nazwy pochodzą od języka angielskiego:
#include <iostream> #include <fstream> #include <cstdlib> #include <string> using namespace std; int main() { string linia; // deklaracja zmiennej, która będzie przechowywała całą linię z pliku txt fstream plik; // zmienna plikowa - to na tej zmienne będą wykonywane operacjae otwarcia i zamknięcia plik.open("plik.txt", ios::in); //otwarcie pliku do odczytu if(plik.good() == true) // jeśli plik istnieje i można go otworzyć { while(!plik.eof()) // pętla odczytujaca wiersz po wierszu aż do końca pliku { getline(plik, linia); cout << linia << endl; //wyświetlenie linii } plik.close(); } return(0); }
Dane można oczywiście wczytywać do tablicy typu string
#include <iostream> #include <fstream> #include <cstdlib> #include <string> using namespace std; int main() { string T[100]; // tablica typu string o 100 wierszach (max 100 wierszy w piku txt fstream plik; // zmienna plikowa - to na tej zmienne będą wykonywane operacjae otwarcia i zamknięcia plik.open("plik.txt", ios::in); //otwarcie pliku do odczytu if(plik.good() == true) // jeśli plik istnieje i można go otworzyć { int i = 0; while(!plik.eof()) // pętla odczytujaca wiersz po wierszu aż do końca pliku { getline(plik, T[i]); cout << T[i] << endl; //wyświetlenie linii i++; } plik.close(); } return(0); }
Jeżeli w pliku tekstowym mamy liczby (1 2 3 ...) i w każdym wierszu są one rozdzielane spacjami i liczb w każdym wierszu jest zawsze tyle samo np.:
11 22 33
44 55 66
itd..
to możesz użyć strumienia:
#include <iostream> #include <fstream> #include <cstdlib> using namespace std; int main() { fstream plik; int liczba1, liczba2, liczba3; plik.open( "dane.txt", ios::in | ios::out ); if( plik.good() == true ) { while (!(plik.eof())) { plik >> liczba1 >>liczba2 >> liczba3; cout << liczba1 << endl; cout << liczba2 << endl; cout << liczba3 << endl; } plik.close(); } return(0); }
Należy być ostrożnym używając strumienia. Wszytko może się rozsypać jeżeli jedna linijka będzie miała np. 4 wyrazy a pozostałe 3. Funkcji wbudowanej do rozdzielania tekstu po określonych znakach niestety nie ma.