Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Biblioteka zapis do pliku problem

Ostatnio zmodyfikowano 2013-05-21 15:41
Autor Wiadomość
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....


C/C++
#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;

class Bib
{
private:
    int wmenu;
    string n_czyt; //nowy czytelnik
    vector < string > n_ksiazka; //nowa ksiązka
    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;
}
P-81943
DejaVu
» 2013-05-21 15:41:36
C/C++
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
P-83506
« 1 »
  Strona 1 z 1