0
                    if((tempTitle.find(tempTitleFind)))
                    {
                      blah blah

                    }

部分一致の場合、部分一致のものだけでなくすべてが出力されます。ここで引数が間違っていますか?? 何度も何度も見直したのですが、見つからないようです。ここで何が間違っていますか?

4

2 に答える 2

3

std::string::findstd::string::npos見つからない場合は返され、-1 になります。0 以外は boolean と同等であるtrueため、「誤検知」が発生します。条件を次のように変更します。

if(tempTitle.find(tempTitleFind) != std::string::npos)
于 2013-02-13T07:58:48.480 に答える
0

tempTitle.find(tempTitleFind) は、tempTitle 内の tempTitleFind の位置、または tempTitleFind が tempTitle にない場合は std::string::npos を返します。

tempTitleFind が tempTitle 内で発生するかどうかを判断するには、次のスニペットを使用できます。

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

ところで:ループ内ではなく、ループの前にtitleFind を小文字に変換する必要があります。

于 2013-02-13T08:02:51.817 に答える