Lekcja 32
Ostatnio zmodyfikowano 2014-06-23 11:03
Mateus. Temat założony przez niniejszego użytkownika |
Lekcja 32 » 2014-06-23 10:20:05 Witam wszystkich! To mój pierwszy post na forum i problem :D Oto kod: #include <iostream> #include <string> #include <fstream> using namespace std;
void funkcja() { ifstream plik; string wiersz; plik.open( "D://plik.txt" ); if( plik.good() ) { cout << "Wczytano "; } else { cout << "Nie wczytano "; } cout << endl << endl; string zmienna; cout << "Podaj wyraz: "; getline( cin, zmienna ); cout << endl; while( getline( plik, wiersz ) ) { size_t pozycja = wiersz.find( zmienna ); if( pozycja == string::npos ) { continue; } else { cout << wiersz << endl; } } plik.close(); } int main() { funkcja(); return 0; } Wczytano
Podaj wyraz: Kurs
--==[ Kurs C++ | http://cpp0x.pl ]==-- http://cpp0x.pl/kursy/Kurs-C++/Poziom-4/Wczytywanie-tekstu-z-pliku/355 I tu wszystko działa jak powinno. Ale gdy dodam wypisanie całego tekstu z pliku przed wyszukiwaniem tekstu to dzieją się cuda. Oto kod, który wariuje: #include <iostream> #include <string> #include <fstream> using namespace std;
void funkcja() { ifstream plik; string wiersz; plik.open( "D://plik.txt" ); if( plik.good() ) { while( getline( plik, wiersz ) ) { cout << wiersz << endl; } } else { cout << "Nie wczytano "; } cout << endl << endl; string zmienna; cout << "Podaj wyraz: "; getline( cin, zmienna ); cout << endl; while( getline( plik, wiersz ) ) { size_t pozycja = wiersz.find( zmienna ); if( pozycja == string::npos ) { continue; } else { cout << wiersz << endl; } } plik.close(); } int main() { funkcja(); return 0; } --==[ Kurs C++ | http://cpp0x.pl ]==-- Obecnie uczysz sie obslugi plikow. Link do czytanego rozdzialu: http://cpp0x.pl/kursy/Kurs-C++/Poziom-4/Wczytywanie-tekstu-z-pliku/355 Udalo Ci sie odczytac plik?
Wykonaj teraz prace domowa ze wspomnianego rozdzialu! :)
Podaj wyraz: Kurs
Proszę o wytłumaczenie dlaczego tak się dzieje. |
|
SeaMonster131 |
» 2014-06-23 10:47:04 Po wypisaniu na początku wszystkich linijek, kursor w pliku znajduje się na jego końcu. Przenieś kursor na początek, lub zamknij i ponownie otwórz plik. |
|
Mateus. Temat założony przez niniejszego użytkownika |
» 2014-06-23 10:57:53 Dzięki za szybką pomoc. Załączam poprawiony kod (gdyby ktoś miał problem): #include <iostream> #include <string> #include <fstream> using namespace std;
void funkcja() { ifstream plik; string wiersz; plik.open( "D://plik.txt" ); if( plik.good() ) { while( getline( plik, wiersz ) ) { cout << wiersz << endl; } } else { cout << "Nie wczytano "; } plik.close(); plik.open( "D://plik.txt" ); string zmienna; cout << "Podaj wyraz: "; getline( cin, zmienna ); cout << endl; while( getline( plik, wiersz ) ) { size_t pozycja = wiersz.find( zmienna ); if( pozycja == string::npos ) { continue; } else { cout << wiersz << endl; } } plik.close(); } int main() { funkcja(); return 0; } Aha, a jak przenieść kursor na początek, bo otym chyba w kursie nie było? |
|
pekfos |
» 2014-06-23 10:59:40 Metodą seekg()/seekp(). W tym przypadku tą pierwszą. |
|
Mateus. Temat założony przez niniejszego użytkownika |
» 2014-06-23 11:03:10 Ok. Jeszcze raz dzięki wszystkim za szybką pomoc. |
|
« 1 » |