Obsługa wczytywania danych z pliku przy pomocy >> niewiele się różni od wczytywania danych z konsoli. Zarówno konsola jak i plik to strumień danych. Dla konsoli wczytanie danych to cin. Innymi słowy, aby wczytać dane z pliku musimy zadeklarować nowy strumień - dajmy na to file i zamiast cin używać file.
Dany jest plik w którym w każdej linijce znajduje się liczba całkowita, spacja, operator - pojedynczy znak, spacja, liczba całkowita, przykładowo:
wypisze na konsoli:
Zadanie polega na wczytaniu każdej linijki danych i obliczenia wyrażenia. Wczytane równanie i wynik powinniśmy wypisać na konsoli. Możemy założyć, że operatorem może być tylko +, -, *, które oznaczają kolejno: dodawanie, odejmowanie i mnożenie. Dane na wejściu są poprawne.
Przed rozpoczęciem pisania głównej funkcji warto napisać funkcję pomocniczą doMath(). Jako argumenty przyjmie dwie liczby całkowite a, b oraz znak c. c jest to operator, który będzie określał programowi operację do wykonania: dodawanie, odejmowanie czy mnożenie.
(2.) Korzystamy z funkcji switch, aby uniknąć masy mnóstwa instrukcji if. (3. - 5.) Wykonujemy wskazaną operację i zwracamy wynik.
Do stworzenia strumienia potrzebny jest typ ifstream, który można zadeklarować po dołączeniu biblioteki fstream.
(2.) Deklaracja zmiennej typu ifstream. Jest to zmienna do której będzie można się się odwoływać, aby wczytać dane z pliku. Jednak program nie wie, który plik ma wczytać, dlatego (3.) należy wywołać metodę open i podać nazwę pliku do otworzenia.
Do sprawdzenia czy udało się otworzyć plik służy funkcja good(). W przypadku, gdy wystąpił błąd podczas otwierania to funkcja zwróci false, w przeciwnym wypadku true.
Funkcja good() przyjmie również wartość false kiedy zostanie osiągnięty koniec pliku, dlatego (5.) określone operacje można wykonywać w pętli while. (6., 7.) Tworzenie tymczasowych zmiennych mają za zadanie przechować odczytane dane. (8.) Operator >> na zmiennej strumienia pliku przekazuje dane z strumienia pliku do zmiennej. Tu wystarczy pamiętać jak działa wczytywanie z konsoli, aby przewidzieć zachowanie zmiennej file. (9. - 10.) Wypisanie całego równania wraz z rozwiązaniem.
(12.) Jeśli jednak nie udało się otworzyć pliku to (13.) to należy wypisać stosowny komunikat. (15.) Dopiero po akcji użytkownika (16.) można przejść do zakończenie działania programu.
Popraw kod tak, aby obsługiwał wczytywanie liczb rzeczywistych oraz dodaj nowy operator dzielenia /.