[lekcja 32] wczytanie określonych wierszy
Ostatnio zmodyfikowano 2014-09-19 23:18
grzeso Temat założony przez niniejszego użytkownika |
[lekcja 32] wczytanie określonych wierszy » 2014-09-18 17:37:57 Zagadka: Czemu to działa: while( std::getline( plik, wiersz ) ) { int a = wiersz.find( SzukanyTekst ); if( a > 0 ) { std::cout << wiersz << std::endl; } } a to nie: while( std::getline( plik, wiersz ) ) { if( wiersz.find( SzukanyTekst ) > 0 ) { std::cout << wiersz << std::endl; } } Jak widać chodzi o wczytanie wierszy i wypisanie tylko tych które maja SzukanyTekst[ cpp ] w sobie |
|
Monika90 |
» 2014-09-18 18:17:37 Obydwa fragmenty są błędne, prawidłowo będzie tak: while( std::getline( plik, wiersz ) ) { if( wiersz.find( SzukanyTekst ) != std::string::npos ) { std::cout << wiersz << std::endl; } }
A różnica w działaniu między Twoim pierwszym kodem a drugim, bierze się stąd, że find nie zwraca int lecz std::string::size_type, a konwersja size_type na int nie zachowuje wartości. |
|
grzeso Temat założony przez niniejszego użytkownika |
» 2014-09-18 18:50:15 a wiersz.find( SzukanyTekst ) nie zwraca przypadkiem pozycji na której znajduje się szukany wyraz czy tam litera? |
|
Monika90 |
» 2014-09-18 22:00:53 Zwraca pozycję na której znajduje się szukany ciąg znaków, albo npos gdy nie można go było znaleźć. |
|
grzeso Temat założony przez niniejszego użytkownika |
» 2014-09-19 23:18:56 Dzięki za pomoc |
|
« 1 » |