niedziela, 15 stycznia 2012

Obsługa plików tekstowych w C++

W jaki sposób zapisać i odczytać dane z pliku tekstowe w C++?


Najpierw przykładowy kod potem przyjdzie czas na opis:

#include <iostream> 
#include <fstream> // 1

using namespace std;

void odwroc(string napis)
{
    for (int i = napis.length(); i >= 0 ; i-- )
    {
        cout << napis[i];
    }
}

int main()
{
    fstream plik;  // 2

    plik.open("test.txt",ios::in); // 3
    if(plik.good())  // 4
    {
        cout<<"otwarto plik\n";
        string tekst;
        while( !plik.eof() )  // 5
        {
            getline( plik, tekst );   // 6
            odwroc(tekst);
            cout <<endl<< tekst << endl;
        }
        plik.close();  // 7
    }else if (plik.bad()) cout << "blad otwarcia" << endl;  // 4

    fstream zapis("test.txt", ios::app|ios::out); // 8 
    if (zapis.good())
    {
        string tekst;
        cout << "wpisz tekst do zapisania w pliku:";
        getline(cin, tekst);  // 9
        zapis << tekst; // 10
        zapis.flush();
        zapis.close(); // 7

    }
    return 0;
}

1. Wczytujemy podstawową biblioteką do obsługi plików w C++ - fstream.

2. Inicjujemy zmienną która będzie komunikowała się z naszym plikiem

3. Otwieramy plik test.txt w trybie do odczytu - ios::in

4. W zależności od tego czy plik został poprawnie otwarty wyświetlamy odpowiedni komentarz, i wykonujemy operacje na nim tylko jeśli został poprawnie otwarty.

5. Odczytujemy zawartość pliku - while (!plik.eof()) - wykonuj instrukcje dopóki(while) nie jesteś(!) na końcu pliku (plik.eof())

6. Odczyt całej linii(wiersza) tekstu

7. Funkcja zamykająca plik

8. Inicjacja zmiennej wraz z nadaniem jej parametrów: plik do otwarcia "test.txt" w trybie dopisywania (ios::app) i zapisu (ios::out)

9. Pobranie tekstu z konsoli do zmiennej tekstowej.

10. Zapis do pliku przy pomoc strumienia << analogicznie jak cout wypisuje na ekranie tekst

2 komentarze: