Zapis danych do pliku C++
Umiejętność zapisywania danych do pliku w C++ jest niezbędna, przed przystąpieniem do matury. Pliki można zapisywać w trybie binarnym oraz tekstowym za pomocą strumienia. Ustawiając odpowiednie flagi możemy ustalić czy informacja ma zostać dopisana do pliku czy ma go nadpisać (wyczyścić przed zapisem).
Zapisywanie danych do pliku C++
Oto podstawowe flagi używane podczas zapisu tekstu do pliku:
ios::out | ios::trunc – zawartość pliku zostanie usunięta przed zapisem
ios::out | ios::app – informacja zostanie dopisana na końcu istniejącego pliku
Program otwiera wskazany plik i sprawdza czy nie wystąpiły błędy. Jeżeli wszystko jest w porządku, rozpoczyna się zapis danych za pomocą strumienia. Odpowiednie flagi należy ustawiać podczas otwierania pliku (plik.open) i oddzielać pionowymi kreskami.
Kod w C++ (dopisywanie tekstu)
#include <iostream> #include <fstream> #include <cstdlib> using namespace std; int main() { string linia; fstream plik; plik.open("plik.txt", ios::out | ios::app); if(plik.good() == true) { plik << "jakiś tekst do dopisania"; plik.close(); } system("PAUSE"); return(0); }
Kod w C++ (czyszczenie pliku przed zapisem)
#include <iostream> #include <fstream> #include <cstdlib> using namespace std; int main() { string linia; fstream plik; plik.open("plik.txt", ios::out | ios::trunc); if(plik.good() == true) { plik << "nowy tekst"; plik.close(); } system("PAUSE"); return(0); }
Otwieramy plik używając biblioteki fstream. Ponieważ jedynie zapisujemy dane do pliku mogli byśmy użyć biblioteki ofstream. Nazwy pochodzą od języka angielskiego:
- ifstream = in file stream = wczytywanie plików
- ofstream = out file stream = zapisywania plików
- fstream połączenie obu powyższych
Na maturze zawsze wymagane jest zapisanie wyników do pliku. Jeżeli wyników jest mało, możesz zapisać je ręcznie. Jeżeli okaże się, że trzeba zapisać 100 linijek, skorzystanie z takiego programu jest niezbędne.
Komentarze
Witam, ja mam dziwny przypadek ponieważ kodzik mi normalnie działa nie wywala żadnych błędów , ale jak chce odczytać plik do którego programem zapisałem dane to jest on pusty. Dodam tylko że jeżeli odczytuje z tego pliku dane za pomocą strumienia ifstream to one normalnie się odczytują
Powiem szczerze – nie wiem.
Witm, czy można wpisać do pliku tekstowego za pomocą cmd na maturze ?
Tzn.
program.exe>tekst.txt
i wtedy przepisuje nam wszystkie couty do pliku ?
Cześć Wszystkim, mam pytanie..motam się trochę z kodem chcąc z konsoli dopisać cokolwiek do pustego pliku ( w momencie jak na sztywno wpiszę tekst do zmiennej i potem zapisuję do pliku .. jest ok, natomiast gdy wprowadzam jakiś string z konsoli, to ten string nie jest potem zapisany do pliku – podoby kod do tego powyżej – dopisywanie tekstu. System którego używam do Fedora 18. Z góry dziękuję za pomoc. Pozdrawiam.
Akurat w tym wypadku zmienna ‚linia’ nie jest potrzebna. Usunę ten błąd.
Artykuł krótki i na temat, takie lubie. Tylko jedno mnie zastanawia do czego jest zmienna:
string linia;
?
A jak dodać z blendera do opengl bo jak tak robie to nie działa!Pisać na e-mail [email protected]
Ten kod nie może zepsuć programu. 🙂
nie dziala
popsulo mi program!!!
Bardzo przydatny artykuł, prosty, krótko i na temat czyli idealnie by odświeżyć sobie wiedzę z zakresu cpp.