-1

我在使用时遇到了一些对我没有多大意义的东西std::string::find()我希望这里的人能够发现我的错误:

std::string testString = "PFAIL";
std::string response = "PFAIL\n";

if( response.find(testString) != std::string::npos )
{
    //do something
}

//do something由于某种原因,此代码从不点击评论。有任何想法吗?

编辑:我的意思是它永远不会碰到//do something代码块,如果我用以下方式表达它,它应该这样做:

if( response.find( testString.c_str() ) != std::string::npos )
{
    // do something
}
4

2 回答 2

5

也许您应该考虑在 if 语句中使用直接逻辑:

if( response.find(testString) == std::string::npos )

这个逻辑表达式可能会让你不那么困惑。如果 find 的返回值等于,std::string::npos则在您的字符串中testString没有找到 variable 中的response字符串。

编辑:我的逻辑回答错误。

于 2013-07-30T19:07:22.963 回答
3

您的情况与您的预期不符。npos如果没有找到则返回。由于响应中明确包含测试,npos因此不会返回并且if将输入正文。

于 2013-07-30T19:08:46.957 回答