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

Jak wyczyścić plik tekstowy ?

Ostatnio zmodyfikowano 2015-03-16 10:31
Autor Wiadomość
arek213
Temat założony przez niniejszego użytkownika
Jak wyczyścić plik tekstowy ?
» 2015-03-14 13:40:51
W internecie znalazłem aby użyć tego:
ofstream( "nazwa_pliku" );
 i plik zostanie obcięty, lecz u mnie to nie działa. Dodam, że plik mam otwarty jako ofstream.
P-128342
pekfos
» 2015-03-14 13:47:03
Nie możesz drugi raz otworzyć plik do zapisu.
P-128343
Brunon3
» 2015-03-14 13:53:28
Nadpisujesz plik podając argument " ".
ofstream( "nazwa_pliku" );
 to zwyczajne otwarcie pliku do zapisu, a nie jego wyczyszczenie.

-BD.
P-128344
arek213
Temat założony przez niniejszego użytkownika
» 2015-03-14 13:57:36
ten znak " " dodał mi tylko spację przed tekstem w pliku
P-128345
aksen
» 2015-03-14 13:59:55
Porada najlepsza na obecnym etapie:

google --------->  "c++ operacje na plikach"

Potem, kiedy powstanie jakiś kod będzie można dyskutować o błędach.
P-128346
arek213
Temat założony przez niniejszego użytkownika
» 2015-03-14 14:01:51
Bo mam taki kod:
C/C++
while( !file.eof() )
{
    for( int i = 0; i < !file.eof(); ++i ) // odczytywanie kolejnych linii pliku
    {
        file >> name >> surname >> age >> efficacy_current;
       
        if(( name.length() > 3 ) &&( surname.substr( surname.length() - 3, surname.length() - 1 ) == "ski" ) &&( efficacy_current > efficacy_previous ) )
        {
            file_edit << " ";
            surname.replace( 1, surname.length() - 4, surname.length() - 4, '*' ); // 2 argument - liczba znakow do zastapienia
            file_edit << name << " " << surname << " " << efficacy_current << endl;
           
        }
        if(( name.length() > 3 ) &&( surname.substr( surname.length() - 3, surname.length() - 1 ) == "ski" ) &&( efficacy_current == efficacy_previous ) )
        {
            surname.replace( 1, surname.length() - 4, surname.length() - 4, '*' );
            file_edit << name << " " << surname << " " << efficacy_current << endl;
        }
        efficacy_previous = efficacy_current;
    }
   
}

i jak w kolejnym obiegu pętli mam efficacy_current > efficacy_previous to chcę aby czyściło mi zawartość pliku file_edit, bo chcę aby tylko zapisywało do pliku osobę z najwyższym efficacy,czyli skutecznościa.
P-128347
Brunon3
» 2015-03-14 14:08:43
Otwierasz plik
ios::app
 czy
ios::out
?
Ustaw na to drugie, a powinno nadpisywać plik, a nie zapisywać do już istniejących danych.

PS. Pokaż więcej kodu; m.in. jak otwierasz plik.

-BD.
P-128348
arek213
Temat założony przez niniejszego użytkownika
» 2015-03-14 14:47:40
cały kod programu :

C/C++
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    ifstream file;
    file.open( "C:\\plik\\pliczek.txt" );
   
    ofstream file_edit;
    file_edit.open( "C:\\plik\\pliczek.max.txt" );
   
    string name;
    string surname;
    int age;
    float efficacy_previous = 0;
    float efficacy_current;
   
    while( !file.eof() )
    {
        for( int i = 0; i < !file.eof(); ++i ) // odczytywanie kolejnych linii pliku
        {
            file >> name >> surname >> age >> efficacy_current;
           
            if(( name.length() > 3 ) &&( surname.substr( surname.length() - 3, surname.length() - 1 ) == "ski" ) &&( efficacy_current > efficacy_previous ) )
            {
                file_edit << " ";
                surname.replace( 1, surname.length() - 4, surname.length() - 4, '*' ); // 2 argument - liczba znakow do zastapienia
                file_edit << name << " " << surname << " " << efficacy_current << endl;
               
            }
            if(( name.length() > 3 ) &&( surname.substr( surname.length() - 3, surname.length() - 1 ) == "ski" ) &&( efficacy_current == efficacy_previous ) )
            {
                surname.replace( 1, surname.length() - 4, surname.length() - 4, '*' );
                file_edit << name << " " << surname << " " << efficacy_current << endl;
            }
            efficacy_previous = efficacy_current;
        }
       
    }
   
    file_edit.seekp( 0, ios::end ); // p - ofstrem , g - ifstream ustawienie kursora na koniec pliku
    if( file_edit.tellp() == 0 ) // //tell - aktualne polozenie kursora w pliku
    {
        file_edit << "\n";
    }
   
    return 0;
}
Kod na wklej.to , nieco przejrzyściej: http://wklejto.pl/223739
P-128352
« 1 » 2
  Strona 1 z 2 Następna strona