Czyszczenie plików .txt

0

Witam,

Potrzebuję pomocy przy czyszczeniu pliku .txt . Moim zadaniem jest stworzyć bazę danych, w której jednym z zadań jest czyszczenie pliku .txt podczas tworzenia nowej bazy. No i tu się pojawia problem. Napisałem krótką funkcję, w której powinno to być czyszczone, natomiast nie chce działać. Kompilator nie pokazuje żadnych błędów podczas kompilowania. Gdzie popełniłem błąd?

Kod źródłowy funkcji:

void nowa_baza(fstream &plik)
{
char wybor='n';
if(plik.good()==true)
{
cout << "UWAGA! Zawartosc pliku zostanie utracona!\n"
<< "Czy na pewno chcesz utworzyc nowa baze? (t/n)\n";

                      cin >> wybor;     

                      if(wybor=='t')
                      {
                                    plik.open("database.txt", std::ios::trunc);
                                    plik.clear();
                                    cout << "\nUtworzono nowa baze danych...\n\n";
                                    getch();
                                    plik.close(); 
                      }
 }
 else
 {
     cout << "Error! Nie odnaleziono pliku database.txt";
     getch();
 }

}

0

usuń te std::ios::trunc i plik.clear() i powinno zadziałać. Bo otwarcie nowego pliku o takiej samej nazwie co poprzedni spowoduje jego nadpisanie

0

Niestety nie pomogło, plik nadal ma w sobie niecenzuralny tekst ( ^^ ) wpisany przeze mnie ręcznie. Przeszukałem już dosyć sporo poradników, gdzie zazwyczaj odpowiedzią na to pytanie było

  1. wczytaj
  2. zamknij
  3. otwórz i go wyczyść

Nie mam pojęcia co jest grane, może jak się wyśpię to mi jakaś nowa idea przyjdzie do głowy (?)

1

Otwórz go po prostu strumieniem ofstream, a nie fstream.

1

Rozumiem, że zgadywałeś do czego służy clear(), bo służy do wyczyszczenia flag błędów, a nie samego strumienia.

0

Ok, działa. Dzięki wielkie. Temat do zamknięcia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0