Biblioteka zapis do pliku problem
Ostatnio zmodyfikowano 2013-05-21 15:41
wojownik266 Temat założony przez niniejszego użytkownika |
Biblioteka zapis do pliku problem » 2013-05-04 08:24:01 Napisałem program który działa w 90% zgodnie z moim zamierzeniem. Problemem natomiast jest to że jak np. wywołam metodę nowy_czytelnik() to program zapisuje dane do pliku tekstowego mniej więcej w połowie edytora. Czy ktoś wie dlaczego tak się dzieje i co zrobić aby program zapisywał dane od samej góry w pliku tekstowym? Testowałem ten program pod win xp i ubuntu i na obu systemach ten sam problem.... #include <iostream> #include <string> #include <fstream> #include <algorithm> #include <vector> using namespace std;
class Bib { private: int wmenu; string n_czyt; vector < string > n_ksiazka; string f_ksiazka[ 100 ]; public: void menu(); void wyb_menu(); void nowy_czytelnik(); void nowa_ksiazka(); void find_ksiazka(); }; void Bib::menu() { cout << "BIBLIOTEKA NARODOWA" << endl; cout << "-------------------" << endl; cout << "Wybierz operacje do wykonania.\n" << endl; cout << "[1].Dodaj nowego czytelnika" << endl; cout << "[2].Dodaj nowa ksiazka" << endl; cout << "[3].Znajdz tytul ksiazki" << endl; cout << endl; } void Bib::wyb_menu() { cout << "Podaj numer operacji:"; cin >> wmenu; switch( wmenu ) { case 1: nowy_czytelnik(); break; case 2: nowa_ksiazka(); break; case 3: find_ksiazka(); break; } } void Bib::nowy_czytelnik() { ofstream out( "czytelnicy.txt", ios::app ); string n_czyt; cout << "Podaj imie i nazwisko:"; while( getline( cin, n_czyt ) ) { out << n_czyt << endl; } out.close(); } void Bib::nowa_ksiazka() { ofstream nksz( "ksiazki.txt", ios::app ); n_ksiazka.reserve( 10 ); cout << "Podaj tytul ksiazki:"; for( int i = 0; i < n_ksiazka[ 0 ].size(); ++i ) { cin >> n_ksiazka[ i ]; cout << "Dodano ksiazke:" << n_ksiazka[ 0 ] << endl; nksz << n_ksiazka[ 0 ] << endl; } nksz.close(); } void Bib::find_ksiazka() { ifstream in( "ksiazki.txt" ); cout << "Podaj tytul ksiazki:"; vector < string > tytul( 10 ); while( cin >> tytul[ 0 ] ) { for( int i = 0; i < 100; ++i ) while( getline( in, f_ksiazka[ i ] ) ) { if( !f_ksiazka[ i ].find( tytul[ i ] ) ) cout << "Znaleziono: " << f_ksiazka[ i ] << endl; if( !in.eof() ) cout << "Nie ma takiej ksiazki, przepraszamy!" << endl; } } } int main() { Bib bi; bi.menu(); bi.wyb_menu(); cin.get(); return 0; }
|
|
DejaVu |
» 2013-05-21 15:41:36 ofstream out( "czytelnicy.txt", ios::app );
Skoro otworzyłeś plik w trybie, który zezwala tylko i wyłącznie dopisywać dane na końcu pliku, to nic dziwnego, że się one nie pojawiają na jego początku :) Szczegóły:
http://cpp0x.pl/kursy/Kurs-C++/Obsluga-plikow/305 |
|
« 1 » |