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

[lekcja 32] wczytanie określonych wierszy

Ostatnio zmodyfikowano 2014-09-19 23:18
Autor Wiadomość
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:
C/C++
while( std::getline( plik, wiersz ) )
{
    int a = wiersz.find( SzukanyTekst );
    if( a > 0 )
    {
        std::cout << wiersz << std::endl;
    }
}

a to nie:
C/C++
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
P-117155
Monika90
» 2014-09-18 18:17:37
Obydwa fragmenty są błędne, prawidłowo będzie tak:
C/C++
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.
P-117157
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?
P-117159
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źć.
P-117165
grzeso
Temat założony przez niniejszego użytkownika
» 2014-09-19 23:18:56
Dzięki za pomoc
P-117203
« 1 »
  Strona 1 z 1