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

Błędne zapisywanie do pliku

Ostatnio zmodyfikowano 2017-10-23 10:45
Autor Wiadomość
ksardias
Temat założony przez niniejszego użytkownika
Błędne zapisywanie do pliku
» 2017-10-23 09:53:53
C/C++
cout << "Ile pozycji" << endl;
cin >> z;
string numerr = int_na_string( numer - 1 );
cout << "Co jest do zrobienia" << endl;
for( z; z >= 0; z-- )
{
    zlecenie = "Zlecenia\\Do zrobienia\\" + numerr + ".txt";
    plik.open( zlecenie.c_str(), ios::out | ios::app );
    getline( cin, do_zrobienia[ i ] );
    plik << do_zrobienia[ i ] << endl;
    plik.close();
    plik.clear();
}
 Program działa tak jak chce z jednym małym ale, zapisuje to co wprowadzę i dodatkowo daje jeszcze na początku pustą linie, dlaczego tak jest i jak tego uniknąć?
P-165990
YooSy
» 2017-10-23 10:11:53
dodatkowo daje jeszcze na początku pustą linie
cin >> z;
W buforze strumienia pozostaje znak nowej linii.

string numerr = int_na_string( numer - 1 );
 usuwamy z kodu, bo jest zbędne, a dalej zmieniamy kod tak
zlecenie = "Zlecenia\\Do zrobienia\\" + to_string( numer + 1 ) + ".txt";

Nie ma potrzeby otwierać i zamykać tego samego pliku w każdym obiegu pętli (maksymalnie niewydajne).

Jeszcze ten zapis.
C/C++
getline( cin, do_zrobienia[ i ] );
plik << do_zrobienia[ i ] << endl;
Po co zapisujesz do tablicy i później do pliku?
Jeśli masz zamiar przechowywać dane aktualnie wprowadzane na użytek programu, zrób to w jednym miejscu,
a następnie zapisz całą tablicę do pliku w innym miejscu. Zmniejszysz bałagan w kodzie.
P-165992
ksardias
Temat założony przez niniejszego użytkownika
» 2017-10-23 10:28:36
Oczyściłem bufor i jest ok, ale średnio rozumiem dlaczego pozostawia linijkę
tworze, bynajmniej taki mam zamiar, bazę danych
EDIT to chodzi o to że jak daje inta to jest '1' a cin zakłada znaki + "/"?
P-165995
YooSy
» 2017-10-23 10:45:48
średnio rozumiem dlaczego pozostawia linijkę tworze
getline odczytuje znak nowej linii z bufora i kończy działanie, pozostawiając pusty string,
a później zapisujesz do pliku pusty wiersz.
Mieszanie
>>
 i
getline()
 to proszenie się o kłopoty,
gdy nie zna się zasady ich działania.
P-165998
« 1 »
  Strona 1 z 1