如何在字符串中查找包含短划线的字符串

时间:2014-05-13 17:13:10

标签: c++ stl

我试着获得字符串的位置" -a"使用此代码

#include <iostream>
#include <string>

using namespace std;

int main(void)
{
string command("test –a string");
size_t pos = command.find("-a");
cout << "position found = " << pos << endl;
}

这产生了这个输出:

position found = 4294967295

如果我删除&#39; - &#39;它按预期工作。返回8。

3 个答案:

答案 0 :(得分:5)

您返回string::npos值,因为该库认为它无法在字符串中找到-a

原因是您在字符串中使用不同的短划线,在搜索字符串中使用短划线-

在两个地方用正确的字符替换字符后,代码就会正常运行(demo)。

答案 1 :(得分:2)

这意味着第一个字符有所不同。

您可以使用前面的字符进行检查,并将它们放在声明中

std::cout << ( '–' == '-' ) << std::endl; 

因为它们是不同的函数find返回值std::string::npos,定义为std::string::size_type( -1 )或等于4294967295

答案 2 :(得分:2)

如果你看起来很近,你会发现' - '不是' - '。