Aby móc wykonywać operacje na plikach należy należy załączyć odpowiednia bibliotekę
1 |
#include <fstream> |
Jeśli mamy dołączona bibliotekę możemy zdefiniować obiekt, który pozwoli nam zapisywać dane do pliku
1 |
ofstream wy("wyjscie.txt"); |
Plik może mieć dowolne rozszerzenie lub nie mieć go wcale. Ale pliki z rozszerzeniem txt łatwo otworzyć w notatniku.
Jeśli chcemy zapisać dane do pliku wystarzczy
teraz napisać
1 |
wy<<20<<" "<<23<<endl; |
Niżej cały program
1 2 3 4 5 6 7 8 9 10 11 |
#include <iostream> #include <fstream> using namespace std; int main() { ofstream wy("wyjscie.txt"); //wy zamiast cout wy<<20<<" "<<23<<endl; wy.close(); return 0; } |
W wyniku uruchomienia programu powstanie plik wyjscie.txt do którego zostaną zapisane liczby 20 i 23 rozdzielone spacją. Plik powstanie w tej lokalizacji gdzie plik programu. Funkcje umożliwiające obsługę plików uruchamia się przez podanie nazwy strumienia tu wy a następnie kropki i nazwy funkcji tu close().
Aby powtórnie użyć istniejącego obiektu wy należy wykorzystać funkcję open
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <iostream> #include <fstream> using namespace std; int main() { ofstream wy("wyjscie.txt"); //wy zamiast cout wy<<20<<" "<<23<<endl; wy.close(); wy.open("wyjscie.txt"); //uzycie ponowne obiektu klasy ofstream spowoduje skasowanie zawartości wy.close(); return 0; } |
Aby odczytać dane z pliku należy użyć klasy ifstream. Poniżej program przepisujący dane z pliku wejscie.txt do wyjscie.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> #include <fstream> using namespace std; int main() {int a; ifstream we("wejscie.txt"); ofstream wy("wyjscie.txt"); while(!we.eof()) { we>>a; wy<<a<<endl; } we.close(); wy.close(); return 0; } |
Obliczanie pola prostokąta o bokach a i b. Trzeba przygotować plik wejscie.txt z danymi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> #include <fstream> using namespace std; int main() {int a,b,pole; ifstream we("wejscie.txt"); ofstream wy("wyjscie.txt"); we>>a>>b; pole=a*b; wy<<"Pole prostokata "<<pole<<endl; we.close(); wy.close(); return 0; } |
Liczenie znaków i wyświetlanie na ekranie
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <iostream> #include <fstream> using namespace std; int main() {char znak; int licznik; ifstream we("wejscie.txt"); ofstream wy("wyjscie.txt"); while(!we.eof()) {we.get(znak); if(we && isdigit(znak)) //isalpha zlicza litery bez białych znaków //isalnum zlicza litery i cyfry //isdigit zlicza cyfry //ala 1ma k22ota licznik=licznik+1; } cout<<licznik; we.close(); wy.close(); return 0; } |
Obliczenie liczby znaków i przepisanie plików
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include <iostream> #include <fstream> using namespace std; int main() {char znak; int licznik; ifstream we("wejscie.txt"); ofstream wy("wyjscie.txt"); while(!we.eof()) {we.get(znak); if(we && isdigit(znak)) //isalpha zlicza litery //isalnum zlicza litery i cyfry //isdigit zlicza cyfry //isspace zlicza spacje //ala 1ma k22ota licznik=licznik+1; wy.put(znak); } cout<<licznik; we.close(); wy.close(); return 0; } |
Zliczanie wyrazów i wypisywanie na ekran
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <iostream> #include <fstream> using namespace std; int main() {int licznik; string slowo; ifstream we("wejscie.txt"); ofstream wy("wyjscie.txt"); while(!we.eof()) { we>>slowo; licznik++; } cout<<licznik<<endl; we.close(); wy.close(); return 0; } |
Zadania
- Napisz program który poprosi użytkownika o podanie imienia nazwiska i klasy a następnie zapisze je w pliku W formacie
Imię: Jan
Nazwisko : Kowalski
Klasa: 4ti
- Napisz program który pobiera z pliku bok a i wysokość trójkąta h i obliczone pole zapisuje do drugiego pliku