zadanie domowe lekcja 32 błąd
Ostatnio zmodyfikowano 2014-12-31 22:49
dafuck17 Temat założony przez niniejszego użytkownika |
zadanie domowe lekcja 32 błąd » 2014-12-31 03:10:46 #include <iostream> #include <fstream> #include <string> using namespace std;
void odczytiWypisz( string wprowadzonyWyraz, string tekst, string wiersz ) { ifstream plik; plik.open( "D:\\plik.txt" ); if( plik.good() ) { cout << "Udalo sie otworzyc plik" << endl; } else { cout << "Nie udalo sie otworzyc pliku" << endl; } getline( plik, tekst ); cout << "Wprowadz szukany wyraz : " << endl; getline( cin, wprowadzonyWyraz ); size_t znalezionaPozycja = tekst.find( wprowadzonyWyraz ); if( znalezionaPozycja != string::npos ) cout << "znaleziono wyraz w linijkach:" << endl; else cout << "Nie znaleziono wyrazu" << endl; while( getline( tekst, wiersz ) ) { if( znalezionaPozycja != string::npos ) cout << wiersz << endl; } plik.close(); }
int main() { string wyraz; string tekst; string wiersz; odczytiWypisz( wyraz, tekst, wiersz ); return 0; }
Błąd jest przy: while( getline( tekst, wiersz ) ) , a treść jest nastepująca: "C:\Users\admin\Desktop\Dokumenty\c++\c++\zadaniedomowe p4l32.cpp:32:33: error: no matching function for call to 'getline(std::string&, std::string&)'" obydwa argumenty to stringi, dołączyłem bblioteke <string> takze o co chodzi? :/ |
|
lectre |
» 2014-12-31 11:43:39 Getline przyjmuje takie argumenty (strumień, string). Czyli wywołuj to w taki sposob getline(cin, nazwa_stringa); |
|
dawiolp16 |
» 2014-12-31 14:07:37 Tak powinien wyglądać działający kod. #include <iostream> #include <fstream> #include <string> using namespace std;
void odczytiWypisz() { ifstream plik; plik.open( "D:\\plik.txt" ); if( !plik.good() ) { cout << "Nie udalo sie otworzyc pliku!" << endl; return; } cout << "Udalo sie otworzyc plik!" << endl; string wprowadzonyWyraz; cout << "Wprowadz szukany wyraz: "; getline( cin, wprowadzonyWyraz ); string fLine; while( getline( plik, fLine ) ) { size_t znalezionaPozycja = fLine.find( wprowadzonyWyraz ); if( znalezionaPozycja != string::npos ) cout << fLine << endl; } return; }
int main() { odczytiWypisz(); return 0; }
Nie obraź się, ale twój kod jest totalnie bezsensu. Przeanalizuj go i popraw swoje błędy :P |
|
Rashmistrz |
» 2014-12-31 16:59:01 @dawiolp16 Jak śmiesz mówić o tym bezsens nie wskazując miejsca...
zupełnie jak kompilator bez wskazywania błędów...e tam... przesadzam :P ale nie powinieneś podawać gotowca __________________________________________ Ołoło łoło ło! Teraz moja kolej... Co do błędu... To jest tak jak mówi Lectre. Wczytywanie tekstu - standardowy strumień wejścia: "Wczytywanie tekstu - std::getline" __________________________________________ else { cout << "Nie udalo sie otworzyc pliku" << endl; } Powinieneś zamknąć program w tym przypadku. Możesz to zrobić tak jak kolega Ci podał: if( !plik.good() ) { cout << "Nie udalo sie otworzyc pliku!" << endl; return 0; } cout << "Udalo sie otworzyc plik!" << endl; __________________________________________ size_t znalezionaPozycja = tekst.find( wprowadzonyWyraz ); while( getline( cin, wiersz ) ) { if( znalezionaPozycja != string::npos ) cout << wiersz << endl; } [...]wypisze na ekranie tylko te wiersze, w których znajduje się wyraz wprowadzony przez użytkownika. |
a w tym przypadku wypisze wszystko, albo nic, zależnie od tego czy będzie się znajdował szukany wyraz w pierwszej linijce... __________________________________________ if( znalezionaPozycja != string::npos ) cout << "znaleziono wyraz w linijkach:" << endl; else cout << "Nie znaleziono wyrazu" << endl; W takiej postaci ten fragment kodu jest zbędny... __________________________________________ Zalecam napisanie tego jeszcze raz, by nie mącić za bardzo. @dawiolp16 int main() { odczytiWypisz(); return 0; } Yhmmmm?! |
|
dafuck17 Temat założony przez niniejszego użytkownika |
» 2014-12-31 22:49:24 Przeanalizowałem wszystko... Kod pisałem ok. 3 w nocy i chyba dosyć dużo namieszałem :D Dzięki wielkie :) |
|
« 1 » |