Witam!
mam problem z odczytem z pliku.
Chcę zrobić program odczytujący z pliku hasło, które potem można zmienić.
O ile pierwsza cześć działa bez zarzutu, to z drugą jest spory problem.
Kod programu (maksymalnie okrojony, bo wiem że błąd jest gdzieś w tym miejscu):
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
using namespace std;
int main ()
{
fstream plik;
plik.open( "pin.txt", ios::in | ios::out);
string haslo;
getline( plik, haslo);
plik.close();
string a;
cout << endl << endl;
cout << "podaj haslo" << endl;
cin >> a;
if (a==haslo)
{
cout << "podaj nowe haslo" << endl << endl;
fstream plik ( "pin.txt", ios::out );
string nowe;
getline( cin, nowe);
plik.write ( &nowe[ 0 ], nowe.length() );
cout << "nowe haslo wprowadzono pomyslnie" << endl << endl;
plik.close();
system ("PAUSE");
// --------------------------
}
return 0;
}
Hasło się odczytuje, sprawdza czy jest poprawne - do tej pory wszystko w porządku.
Niestety, nie da się wpisać nowego hasła.
Zauważyłem, jeżeli wpiszę stare hasło (przy sprawdzaniu) a po spacji nowe, to nowe się zapisze w pliku. Ale jest to dla mnie kompletnie niezrozumiałe, bo wygląda jakby instrukcja z wpisywaniem wskakiwała przed cout.
Bardzo proszę o pomoc, bo siedzę nad tym drugi dzień i nie mam pojęcia gdzie jest błąd.
Dodam jeszcze, że jak w kodzie jest sam fragment z wpisywaniem pliku, to działa bez zarzutu.