2013-02-13 2 views
0
    if((tempTitle.find(tempTitleFind))) 
        { 
         blah blah 

        } 

, когда у меня есть частичное совпадение, все печатается, а не только с частичным совпадением, есть ли у меня аргумент здесь неправильно? Я просматривал это снова и снова и кажется, что не могу найти его. Что я здесь делаю неправильно?найти функцию распечатать все?

+0

Возможно, вы немного потрудились: 'std :: transform' - простой способ преобразования строки в строчный. – chris

+0

@chris спасибо. – 2013-02-13 08:18:43

ответ

3

std::string::find возвращает std::string::npos, если он не найден, и это равно -1. Все, что не равно 0, эквивалентно булевому true, поэтому вы получаете «ложные срабатывания». Измените условие:

if(tempTitle.find(tempTitleFind) != std::string::npos) 
0

tempTitle.find (tempTitleFind) возвращает позицию tempTitleFind в tempTitle или станд :: строка :: НСС, если tempTitleFind не происходит в tempTitle.

Чтобы определить, происходит ли tempTitleFind в tempTitle, вы можете использовать следующий фрагмент кода:

if(tempTitle.find(tempTitleFind)!=std::string::npos) 
{ 
... 
} 

BTW: Вы должны преобразовать titleFind в нижний регистр , прежде чем петлю, а не внутри.