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

Usuwanie danych / słów z pliku .txt [C++]

Ostatnio zmodyfikowano 2014-02-17 20:46
Autor Wiadomość
Firewal_
Temat założony przez niniejszego użytkownika
Usuwanie danych / słów z pliku .txt [C++]
» 2014-02-17 18:33:11
Witam,

przeszukałem dużo tematów stron i artykułów odnośnie działań na plikach, były odczyty zapisy, ale za Chiny nie znalazłem jak usunąć coś z tych plików.

Mam program na zaliczenie, w którym muszę usuwać dane po wpisaniu słów kluczowych, ale nie potrafię sobie poradzić.

Jest ktoś w stanie z was mi pomóc ?
P-104794
alixir
» 2014-02-17 18:38:52
Dlatego że nie ma możliwości usuwania czegoś z pliku.
Są dwie opcje:
1) Przepisujesz plik do drugiego pliku z pominięciem frazy, która cię interesuje, a następnie skasowanie starego pliku, a nowemu nadanie nazwy starego.
2) Wczytanie całego pliku do struktury/tablicy lub innego kontenera. Ponowne otworzenie pliku w trybie do zapisu i nadpisanie go wartościami z pominięciem interesującej frazy.
P-104795
Firewal_
Temat założony przez niniejszego użytkownika
» 2014-02-17 18:42:00
No dobra a jak to wykonać ? Jest jakiś przykład który bym mógł podejrzeć ?

Jestem sieciowcem a dostałem za zadanie coś zaprogramować i to nie jest moja dziedzina.

Proszę o pomoc jako laik w tych tematach
P-104796
alixir
» 2014-02-17 20:46:20
Tu masz prosty przykład jednej z metod:

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

void usun_slowo( std::string &, const std::string );

int main() {
   
    std::vector < std::string > linia;
   
    // -- odczytujemy i kasujemy slowo --
    std::ifstream plik_we;
    plik_we.open( "tekst.txt" );
   
    if( !plik_we.good() ) {
        std::cout << "Blad odczytu pliku" << std::endl;
        exit( 1 );
    }
   
    std::string temp;
    while( std::getline( plik_we, temp ) ) {
        usun_slowo( temp, "szukane_slowo" );
        linia.push_back( temp );
    }
    plik_we.close();
   
    // -- zapisujemy --
    std::ofstream plik_wy( "tekst.txt" );
   
    if( !plik_wy.good() ) {
        std::cout << "Blad odczytu pliku" << std::endl;
        exit( 1 );
    }
   
    for( unsigned i = 0; i < linia.size(); i++ )
         plik_wy << linia.at( i ) << std::endl;
   
    plik_wy.close();
   
    system( "pause" );
    return 0;
}

void usun_slowo( std::string & tekst, const std::string slowo ) {
    size_t n;
    if(( n = tekst.find( slowo ) ) != std::string::npos )
         tekst.erase( n, slowo.length() );
   
}
P-104815
« 1 »
  Strona 1 z 1