我试着获得字符串的位置" -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。
答案 0 :(得分:5)
您返回string::npos
值,因为该库认为它无法在字符串中找到-a
。
原因是您在字符串中使用不同的短划线–
,在搜索字符串中使用短划线-
。
在两个地方用正确的字符替换字符后,代码就会正常运行(demo)。
答案 1 :(得分:2)
这意味着第一个字符有所不同。
您可以使用前面的字符进行检查,并将它们放在声明中
std::cout << ( '–' == '-' ) << std::endl;
因为它们是不同的函数find返回值std::string::npos
,定义为std::string::size_type( -1 )
或等于4294967295
答案 2 :(得分:2)
如果你看起来很近,你会发现' - '不是' - '。