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

Problem z pracą z plikiem.txt

Ostatnio zmodyfikowano 2008-08-10 18:45
Autor Wiadomość
Damien
Temat założony przez niniejszego użytkownika
Problem z pracą z plikiem.txt
» 2008-08-09 22:12:00
Witam wszystkich. Mam dość dziwny problem i proszę o poradę. Z góry piszę, że jestem początkujący :)
Aby go zobrazować napisałem prosty program:

C/C++
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    fstream plik;
    string a;
    plik.open( "dane.txt", ios::in | ios::out );
   
    cout << "Napisz tekst: ";
    getline( cin, a );
    plik << a;
    return( 0 );
}

Za każdym razem jak na początku dam komendy żeby odczytać dane z pliku to nie mogę nic na nim zapisać. Gdybym usunął tę część:

C/C++
getline( plik, a );
cout << "Poprzednio napisany tekst: " << a << endl;

normalnie dałoby się zapisać dane na pliku. Ale ona musi być na początku żeby wczytać ostatnio zapisane dane, z możliwością dopisania nowych a takiej możliwości nie mam.

Mam nadzieję, że zrozumiecie o co mi chodzi.
Pozdro :)
P-1250
DejaVu
» 2008-08-10 14:03:21
W lekcji http://ddt.pl/kursy/?LessonId=110 zobacz rozdział 23.7.

C/C++
std::fstream plik( "plik.txt", std::ios::out ); //zakładamy, że plik udało się otworzyć
plik.seekp( 0, std::ios_base::end ); //skok na koniec pliku
//tutaj zapis do pliku (dopisywanie na końcu)
P-1252
Damien
Temat założony przez niniejszego użytkownika
» 2008-08-10 18:09:45
Próbowałem już z tym. To kod:

C/C++
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    string a;
    fstream plik;
    plik.open( "dane.txt", ios::in | ios::out );
    getline( plik, a );
    cout << "Poprzednio napisany tekst: " << a << endl;
    cout << "Napisz tekst: ";
    getline( cin, a );
    plik.seekp( 0, std::ios_base::end );
    plik << a;
    return( 0 );
}


W przypadku tego kody nie mogę zapisać danych w pliku. Mogę je wpisać za pomocą notatnika i program odczyta te dane, ale za pomocą tego programu nie zapisuje mi nic. Ale kiedy np. otworze plik w notatniku i wcisnę enter czyli przejdę do nowego wiersza to cały program działa poprawnie. :( sory ale nie mogę wpaść jak temu zaradzić o.O
P-1253
DejaVu
» 2008-08-10 18:24:59
To dopisuje do pliku nowe dane.
C/C++
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    string a;
    fstream plik;
    plik.open( "dane.txt", ios::out | ios::app );
    if( plik.good() )
    {
        cout << "Napisz tekst: ";
        getline( cin, a );
        plik.seekp( 0, std::ios_base::end );
        plik << a << endl;
        plik.close();
    } else cout << "Nie udalo sie utworzyc pliku" << endl;
   
    return( 0 );
}
P-1254
Damien
Temat założony przez niniejszego użytkownika
» 2008-08-10 18:45:45
Ok, dziękuję za pomoc :)
P-1255
« 1 »
  Strona 1 z 1