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

Obsługa plików

Ostatnio zmodyfikowano 2012-12-02 22:49
Autor Wiadomość
whiskas
Temat założony przez niniejszego użytkownika
Obsługa plików
» 2012-12-02 22:26:10
Witam.
Szlifując dalej moje umiejętności programowania próbuję ogarnąć obsługe plików. Problem polega na tym, że puki co jestem w stanie zapisać dane do pliku, wymazać je, ale za żadne skarby nie jestem w stanie odczytać ich, może mi ktoś poprawić mój kod tak, żeby program mi wyświetlił tekst który wprowadzam chwilę wcześniej?

C/C++
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>
using namespace std;
main()
{
    fstream plik;
    plik.open( "tekst.txt", ios::in | ios::out | ios::trunc );
    if( plik.good() == true )
    {
       
        cout << "Uzyskano dostep do pliku!" << endl;
        string napis;
        getline( cin, napis );
        plik.write( & napis[ 0 ], napis.length() );
        string dane;
        cout << getline( plik, dane );
    }
    else
         cout << "Dostep do pliku zostal zabroniony!" << endl;
   
    getch();
    return 0;
}
P-70264
Mrovqa
» 2012-12-02 22:38:58
C/C++
plik.write( & napis[ 0 ], napis.length() );
std::string to nie char*. Pobierasz adres pierwszego znaku... Użyj metody std::string::c_str().
P-70267
whiskas
Temat założony przez niniejszego użytkownika
» 2012-12-02 22:46:11
Hmmm, albo coś źle robie, albo dalej to nie to, bo dane są zapisane w pliku i plik jest czyszczony za każdym razem gdy uruchamiam program, ale nie wyświetli mi to co wpisuje do pliku ;/
P-70269
ison
» 2012-12-02 22:47:27
@Mrovqa, dobrze jest

Nie odczytuje zapisanej wartości bo w momencie wczytania wskaźnik aktualnej pozycji znajduje się na końcu pliku.
odczytuj w ten sposób
C/C++
string dane;
plik.seekg( 0, ios_base::beg );
getline( plik, dane );
cout << dane;
P-70270
whiskas
Temat założony przez niniejszego użytkownika
» 2012-12-02 22:49:56
Thx Ison, tak myślałem żeby wskaźnik przestawić na początek, ale jakoś coś mi kod nie podszedł i nie mogłem go rozkminić, thx za pomoc, temat zamykam =]
P-70271
« 1 »
  Strona 1 z 1