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

Czyszczenie pliku

Ostatnio zmodyfikowano 2014-12-01 20:16
Autor Wiadomość
fornakter
Temat założony przez niniejszego użytkownika
Czyszczenie pliku
» 2014-11-25 12:23:26
Witam.
Używam MS VS C++ 2013
Uczę się obsługi plików, ale nie działa mi czyszczenie pliku.
C/C++
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "fstream"
#include "string"

using namespace std;

int main( int argc, _TCHAR * argv[] )
{
    ifstream plik;
    string txt;
    plik.open( "C:/plik.txt" );
    if( plik.good() )
    {
        cout << "ok" << endl;
        while( getline( plik, txt ) )
             cout << txt << endl;
       
    }
    else { cout << "Lipa!"; }
    plik.close();
   
    _getch();
   
}
jak dodaję do otwieranego pliku ios::trunc
plik.open( "C:/plik.txt", ios::trunc );

podczas kompilacji nie wyskakują żadne błędy (succees) ale nie otwiera pliku (dostaję jedynie napis "Lipa!")
Kombinowałem, ale moje możliwości amatora się skończyły :)
Chodzi mi o to, żeby za każdym razem czyścić plik i wpisywać nową wartość do niego.

Z góry dzięki za pomoc.
P-121350
colorgreen19
» 2014-11-25 12:42:12
zamien ifstream na ofstream i wtedy dopisz ios::trunc
P-121351
fornakter
Temat założony przez niniejszego użytkownika
» 2014-11-25 12:47:28
Sprawdziłem, wyskoczył błąd z "getline"
W oczekiwaniu na odpowiedź sam wygrałem walkę;)
Dodałem do
C/C++
plik.open( "C:/plik.txt", ios::in | ios::out | ios::trunc );
zostawiając ifstream.
Działa.
Może to i nawet lepiej z tymi dodatkowymi parametrami, więcej możliwości.

Dzięki za pomoc :)

Edit: Teraz mam problem z zapisaniem tekstu do pliku.
Błąd:
error C2676: binary '<<' : 'std::ifstream' does not define this operator or a conversion to a type acceptable to the predefined operator
wklejam tylko kawałek kodu, o który mi chodzi
C/C++
else { cout << "Lipa!"; }
napis = "567671";
plik << napis;
P-121352
1aam2am1
» 2014-11-25 15:03:19
zamień ifstream lub ofstream na std::fstream
P-121361
fornakter
Temat założony przez niniejszego użytkownika
» 2014-11-25 15:40:56
Zero błędów podczas kompilacji ale nie wstawia tekstu w plik.
P-121368
1aam2am1
» 2014-11-25 15:44:02
Otwierasz w trybie do zapisu? Bo jeżeli tak to spróbuj bez żadnych if-ów.
P-121369
fornakter
Temat założony przez niniejszego użytkownika
» 2014-11-25 15:51:35
Zadziałało
C/C++
int main( int argc, _TCHAR * argv[] )
{
    fstream plik;
    string txt, napis;
    plik.open( "C:/plik.txt", ios::in | ios::out | ios::trunc );
   
    napis = "Test!";
    cout << napis;
    plik << napis;
    plik.close();
   
    _getch();
   
}
Tylko jak teraz mogę rozwiązać problem braku pliku/złej nazwy/etc?
P-121374
1aam2am1
» 2014-11-25 15:54:03
C/C++
int main( int argc, _TCHAR * argv[] )
{
    fstream plik;
    string txt, napis;
    plik.open( "C:/plik.txt", ios::in | ios::out | ios::trunc );
    if( plik.is_open() ) //otwarty?
    {
       
        napis = "Test!";
        cout << napis;
        plik << napis;
       
    } else { //nie ortwarty
       
        std::cout << "Przykro mi nie udalo sie";
       
    }
    plik.close();
   
    _getch();
   
}
P-121375
« 1 » 2
  Strona 1 z 2 Następna strona