Podstawy obsługi plików

Po całkiem długim wprowadzeniu, czas przejść do omawiania obsługi plików. Aby mieć możliwość korzystania z narzędzi do obsługi plików, dostarczonych wraz ze standardem C++, należy na początku kodu źródłowego dołączyć odpowiedni plik nagłówkowy. Jeżeli w naszej aplikacji będziemy chcieli odczytywać lub zapisywać pliki to wystarczy, że dołączymy plik nagłówkowy fstream, czyli:

					
	#include <fstream>
Kolejnym etapem jest utworzenie obiektu, który umożliwi nam komunikację ze wskazanym przez nas plikiem. Obiekt ten tworzy się analogicznie do zmiennych. Typem danych będzie teraz std::ifstream, natomiast nazwa zmiennej może być dowolna, przykładowo:
					
	std::ifstream plik;
	plik.open( "C:\\..\\odczyt.txt" );
Jeżeli wspomniany plik będzie istniał na dysku oraz nie będzie on zablokowany do odczytu przez inną aplikację, to wówczas otwarcie pliku zakończy się powodzeniem.

Zad 1. (1 punkt)
Zmodyfikuj następujący kod Kod programu tak by wypisał:
plik udalo sie otworzyc
jeżeli plik o nazwie 1.txt istnieje oraz
otwarcie pliku sie nie powiodlo
w przeciwnym wypadku.

Odczytywanie tekstu z pliku

Zaletą narzędzi C++ jest niewątpliwie łatwość ich używania. Odczytywanie tekstu z pliku sprowadza się bowiem do użycia strumienia >>, bądź zastosowania funkcji std::getline.

Zamykanie otwartego pliku

Skoro już wiesz jak otworzyć plik oraz odczytać z niego informacje, wypadałby również wiedzieć w jaki sposób należy go zamknąć. Wiedz, że każdy otwarty plik należy zamykać zaraz po zakończeniu z nim pracy. Do tego celu służy metoda close, której wywołanie wyglądać może następująco:
					
	plik.close();

Zad 2. (1 punkt)
Zmodyfikuj następujący kod Kod programu tak by funkcja wyswietl_zawartosc_pliku():
wypisywała zawartość pliku 1.txt.

Zad 3. (1 punkt)
Przeanalizuj zawartość pliku 2.txt. Napisz program który wylicza zadłużenie kolejnych osób i wypisuje je na standardowym wyjściu w formacie:

					
	Michal XXX musi zwrucic 70
	Pawel XXX musi zwrucic -30
	Daniel XXX musi zwrucic 250
	Przemyslaw XXX musi zwrucic 150
	Wojciech XX musi zwrucic 0					

Do sprawdzania długości tekstu służą dwie metody klasy std::stringt. Tymi metodami są: size oraz length.

Zad 4. (1 punkt)
Przeanalizuj program Kod programu Napisz program który wypisze ilość znaków w każdej z linii pliku 1.txt.

Klasa std::string umożliwia również wstawianie nowej treści w dowolnym miejscu istniejącego tekstu - do tego celu wykorzystuje się metodę insert.
Do wyszukiwania frazy występującej w tekście służy metoda find, która należy do klasy std::string. Metoda find posiada kilka deklaracji, które różnią się przyjmowanymi argumentami - wybiera się zazwyczaj tą, która na daną chwilę jest dla nas najbardziej odpowiednia

					
	size_type find( value_type ch, size_type off = 0 ) const;
	size_type find( const value_type * ptr, size_type off = 0 ) const;
	size_type find( const value_type * ptr, size_type off, size_type count ) const;
	size_type find( const basic_string & str, size_type off = 0 ) const;

Zad 5. (2 punkt)
Napisz program, który w pliku 3.txt usunie powtarzające się spacje występujące obok siebie i zastąpi znaczniki <b> oraz </b> znacznikami [b] oraz [/b]. Tekst, który powstanie w wyniku przeprowadzenia wspomnianych operacji wypisz na ekran.

Zad 6. (2 punkt)
W pliku 4.txt znajdują się adresy ludzi do których chcemy wysłać zaproszenie na imieniny (mamy tylko ten plik). Oczywiście chcemy wysłać mailem - proszę utworzyć plik adresy który będzie zawierał tylko adresy mailowe tych ludzi oddzielone przecinkami (wtedy łatwo będzie wysłać tego maila).