Usuwanie danych / słów z pliku .txt [C++]
Ostatnio zmodyfikowano 2014-02-17 20:46
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 ? |
|
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. |
|
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 |
|
alixir |
» 2014-02-17 20:46:20 Tu masz prosty przykład jednej z metod: #include <iostream> #include <string> #include <fstream> #include <vector>
void usun_slowo( std::string &, const std::string );
int main() { std::vector < std::string > linia; 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(); 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() ); }
|
|
« 1 » |