marek Temat założony przez niniejszego użytkownika |
rozdz. 16 kłopoty z pisaniem do pliku w kursie C++ » 2010-01-24 22:52:54 W pliku docek.txt jest tekst "Ala ma". Poniższy program czyta plik docek.txt i wyświetla "Ala ma" na ekranie.(działa!) Czy ktoś mógłby zmodyfikować ten program, tak aby dopisać "kota" do pliku docek.txt w/g zasady: p.16.6.1. Zapisywanie danych za pomocą strumienia "nazwa_zmiennej_plikowej<<zmienna_ktora_ma_zostac_zapisana_do_pliku;" Próbuję różnych kombinacji i nic! #include <iostream> #include <conio.h> #include <fstream> #include <cstring> int main() { std::fstream plik; std::string kartka; plik.open( "docek.txt", std::ios::in | std::ios::out ); if( plik.good() == true ) { getline( plik, kartka ); plik.close(); } else std::cout << "Dostep do pliku zostal zabroniony!" << std::endl; std::cout << kartka; return( 0 ); } |
|
malan |
» 2010-01-24 23:34:37 #include <iostream> #include <conio.h> #include <fstream> #include <cstring> int main() { std::fstream plik; std::string kartka; plik.open( "docek.txt", std::ios::in ); if( plik.good() == true ) { getline( plik, kartka ); plik.close(); } else std::cout << "Dostep do pliku zostal zabroniony!" << std::endl; std::cout << "Zawartosc pliku:" << kartka << std::endl; plik.clear(); plik.open( "docek.txt", std::ios::out ); if( plik.good() ) { plik << kartka << " kota."; plik.close(); } return( 0 ); } |
|
marek Temat założony przez niniejszego użytkownika |
Dzięki malan (√ιק) » 2010-01-25 09:55:24 Do pojedynczej instrukcji "plik<<kartka<<" kota.";" doszedłem już wcześniej. Ale z kursu nie wynikało że "plik<<kartka<<" kota.";" należy obudować kawałkiem programu jak poniżej. Szkoda, że przy tak trudnym temacie, jak obsługa plików autorzy nie podali przykładów! Kurs jest świetny, ale tak jak życiu, nie ma rzeczy idealnych. Tak czy owak, bez pomocy nie przeszedłbym dalej. plik.clear(); plik.open( "docek.txt", std::ios::out ); if( plik.good() ) { plik << kartka << " kota."; plik.close(); } |
|
malan |
» 2010-01-25 15:00:33 To jest kurs C++, nie kurs nauki myślenia. Do tego mogłeś dojść sam... plik.open( "docek.txt", std::ios::out ); if( plik.good() ) { plik << kartka << " kota."; plik.close(); }
Jedyna funkcja, której nie ma w kursie to clear, ale bez niej też da się napisać ten program. std::fstream plik2; plik2.open( "docek.txt", std::ios::out ); if( plik2.good() ) { plik2 << kartka << " kota."; plik2.close(); }
//edit: Poprawione. |
|
marek Temat założony przez niniejszego użytkownika |
a gdzie są te paragrafy 23.3 23.3.1 ....? » 2010-01-25 17:27:25 |
|
malan |
» 2010-01-25 23:38:21 Sory, mam wydrukowaną starszą wersję kursu. Miałem na myśli paragrafy 16.x. |
|
marek Temat założony przez niniejszego użytkownika |
czy otwarcie pliku powoduje automatyczne kasowanie jego zawartości? » 2010-01-26 14:38:32 Tak by wynikało z programu
include <fstream> int main() { std::fstream plik; plik.open("docek.txt",std::ios::out); return(0); } Przed uruchomieniem programu w "docek.txt" był "kot" Po wykonaniu programu w "docek.txt" nic nie było.
|
|
malan |
» 2010-01-27 01:05:21 Tak, jeśli otworzysz pliku do zapisu (std::ios::out). Żeby tego uniknąć dodaj flagę std::ios::app, która spowoduje, że dane podczas otwarcie pliku do zapisu nie znikną oraz będą zapisywanie na końcu pliku. |
|
« 1 » 2 |