Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Работа со строками


Автор: irvis 14.6.2006, 09:48
надо посчитать сколько раз в строке повторяется подстрока "step". я знаю только такую функцию
char *strstr(const char *s1, const char *s2); , но че то не получатся с ее помощью посчитать количество раз.
подскажите как быть? 

Автор: _hunter 14.6.2006, 10:36
strtok() используй 

Автор: Daevaorn 14.6.2006, 11:08
irvis,
Код

int count( const std::string& str, const std::string& sub_str )
{
    std::string::size_type n = -1;
    int i = 0;
    while( ( n = str.find( sub_str, n + 1 ) ) != std::string::npos )
        ++i;
    return i;
}

Только в этом случае, если нужно слово "step", а не последовательность символов "step" - надо искать " step " smile 

Автор: MAKCim 14.6.2006, 11:39
Код

unsigned int count(const char* str, const char* hash)
{
    const char* ptr;
    unsigned int res=0;
    for (; (ptr=strstr(str,hash))!=NULL; ++res, str=ptr+1);
    return res;
}
 

Автор: irvis 14.6.2006, 16:03
не забывайте что, вы тоже когдато начинали.

strstr в книге не было.

спасибо! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)