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

[C++] Nie działa zapisywanie do pliku

Ostatnio zmodyfikowano 2014-12-09 23:04
Autor Wiadomość
Snaki
Temat założony przez niniejszego użytkownika
[C++] Nie działa zapisywanie do pliku
» 2014-12-09 18:09:48
Witam. Mam taki mały kodzik:
C/C++
plik.open( "score.txt", ios::app | ios::out );
plik << str << " zdobyl/a " << ktore_pytanie << " pkt" << endl;
str = "";
plik.close();

No i niby wszystko ładnie, ale jest jeden problem - nie działa. Problem występuje po dodaniu ios'ów. Bez nich wszystko działa, ale jednak nie tak jak powinno - chcę, by informacje były dodawane do pliku.
P-122592
colorgreen19
» 2014-12-09 18:47:28
jakiego typu masz "plik" ? ifstream czy ofstream
P-122594
Snaki
Temat założony przez niniejszego użytkownika
» 2014-12-09 20:08:50
Fstream. Używam tej zmiennej także do odczytywania.
P-122595
darko202
» 2014-12-09 23:04:15
pytanie cologreen19 dotyczyło sposobu deklaracji

std::ifstream plik; //  klasa std::ifstream posiada tylko i wyłącznie metody umożliwiające odczytywanie zawartości pliku
http://www.cplusplus.com​/reference/fstream/ifstream/
std::ofstream plik; //  tu zapisu
http://www.cplusplus.com​/reference/fstream/ofstream/

użyłeś  fstreame
http://www.cplusplus.com​/reference/fstream/fstream/
teraz flagi
in input Plik otwarty do odczytu: bufor strumienia wewnętrznego obsługuje operacje wejściowe.
out output  Plik otwarty do zapisu: bufor strumienia wewnętrznego obsługuje operacje wyjścia.
binary binary Operacje wykonywane są w trybie binarnym, a nie tekst.
ate at end Pozycja wyjściowa zaczyna się na końcu tego pliku.
app append Aplikacja końca   Wszystkie operacje wysyłania stanie na końcu dokumentacji, dodanie do już istniejących treści.
trunc truncate Wszelkie treści, które istniały w pliku, zanim będzie otwarte są odrzucane.

użyłeś flag
 ios::app | ios::out

czyli teoretycznie dobrze 

pytanie
1. czy ważna jest kolejnośc flag ?
w przykładzie jest
std::fstream fs;
fs.open ("test.txt", std::fstream::in | std::fstream::out | std::fstream::app);

spróbuj zmienić kolejność flag

ale są to inne flagi od użytych przez Ciebie
std::fstream::out | std::fstream::app

? czym to się różni
jak się patrzy na Input/output file stream class z
http://www.cplusplus.com​/reference/fstream/fstream/
to
ios <-istream
ios <-istream<-iostream<-fstream

skąd jest ten przykład
http://www.cplusplus.com​/reference/fstream/fstream/open/
C/C++
// fstream::open / fstream::close
#include <fstream>      // std::fstream

int main() {
   
    std::fstream fs;
    fs.open( "test.txt", std::fstream::in | std::fstream::out | std::fstream::app );
   
    fs << " more lorem ipsum";
   
    fs.close();
   
    return 0;
}

może zmień te flagi na zgodne z tym przykładem
?

2. czy plik już istnieje ? czy go tworzysz od nowa ?
   zmień nazwę  może ma status zablokowny i otwarcie kończy się błędem

3. sprawdzić status operacji otwarcia
pewnie ?
if( plik.good() )
{
    //INFO: plik udało się otworzyć
} else
{
    //INFO: otwarcie pliku się nie powiodło
} //else
  
lub może  
   if (fs.open(..) == -1)
     // nie udało się otworzyć

może są inne statusu
P-122613
« 1 »
  Strona 1 z 1