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

fstream nie moge dopisać danych do pliku txt

Ostatnio zmodyfikowano 2014-10-20 19:57
Autor Wiadomość
drudl
Temat założony przez niniejszego użytkownika
fstream nie moge dopisać danych do pliku txt
» 2014-10-19 23:46:32
Problem jak w temacie, a dodatkowo funkcje tellp i tellg pokazują -1, chociaż tekst się wyświetla.
To mój kod:
C/C++
std::fstream plik;
plik.open( "tekst.txt", std::ios::in | std::ios::out );
if( plik.good() )
{
    textprintf( screen, font, 0, 0, makecol( 255, 255, 128 ), "Udalo sie otworzyc plik tekst.txt" );
} else
{
    textprintf( screen, font, 0, 0, makecol( 255, 255, 128 ), "Nie udalo sie otworzyc pliku tekst.txt" );
}
std::string odczytanyTekst;
//std::getline( plik, odczytanyTekst );
std::string wiersz;
while( std::getline( plik, wiersz ) )
{
    odczytanyTekst += wiersz;
}

int y = 10;
try {
    for( int pozycja = 0, x = 0; 1; ++pozycja )
    {
        std::string znak;
        std::string nl( "\\" );
        znak = odczytanyTekst.substr( pozycja, 1 );
        if( znak == nl )
        {
            std::string n( "n" );
            znak = odczytanyTekst.substr( ++pozycja, 1 );
            if( znak == n )
            {
                y += 10;
                x = 0;
                continue;
            }
        }
        textout_ex( screen, font, znak.data(), x, y, makecol( 250, 250, 250 ), - 1 );
        x += 8;
    }
}
catch( std::out_of_range )
{
    textout_ex( screen, font, "Koniec wczytywania", 0, y += 10, makecol( 250, 250, 250 ), - 1 );
}


//textout_ex( screen, font, "Koniec petli", 0, y += 10, makecol( 250, 250, 250 ), - 1 );
y += 10;

std::string tekst( "Ma na imie Puszek." );
textprintf( screen, font, 0, y += 10, makecol( 255, 255, 200 ), "wskaznik zapisu %d", plik.tellp() );
textprintf( screen, font, 0, y += 10, makecol( 255, 255, 200 ), "wskaznik wczytywania %d", plik.tellg() );
plik.write( tekst.data(), tekst.length() );
textprintf( screen, font, 0, y += 10, makecol( 255, 255, 200 ), "wskaznik zapisu %d", plik.tellp() );
textprintf( screen, font, 0, y += 10, makecol( 255, 255, 200 ), "wskaznik wczytywania %d", plik.tellg() );
y += 10;

while( std::getline( plik, wiersz ) )
{
    odczytanyTekst += wiersz;
}

try {
    for( int pozycja = 0, x = 0; 1; ++pozycja )
    {
        std::string znak;
        std::string nl( "\\" );
        znak = odczytanyTekst.substr( pozycja, 1 );
        if( znak == nl )
        {
            std::string n( "n" );
            znak = odczytanyTekst.substr( ++pozycja, 1 );
            if( znak == n )
            {
                y += 10;
                x = 0;
                continue;
            }
        }
        textout_ex( screen, font, znak.data(), x, y, makecol( 250, 250, 250 ), - 1 );
        x += 8;
    }
}
catch( std::out_of_range )
{
    textout_ex( screen, font, "Koniec wczytywania", 0, y += 10, makecol( 250, 250, 250 ), - 1 );
}

//plik.write( tekst.data(), .length() ); //zapisuje dane poczynając od 0 indeksu







readkey();




plik.close();

Problem w tym, że nic się nie dopisuje.
Nie wiem zupełnie co z tym zrobić.
P-118975
Jacob99
» 2014-10-20 14:17:05
A pomyślałeś o ustawieniu wskaźnika pisania?
P-119003
drudl
Temat założony przez niniejszego użytkownika
» 2014-10-20 19:57:37
Nie bardzo rozumiem o co chodzi. Mógłbyś mi napisać jak to by miało wyglądać?

edit: Ok, zrozumiałem o co chodzi. Temat można zamknąć.
P-119082
« 1 »
  Strona 1 z 1