我希望通过
在字符串(word)中找到char(expected_char)if (word.find(expected_char)==true)
{
cout << "You got one! It's on pos" << word.find(expected_char);
}
else
{
...
}
如果我的字符串是例如“abcd”,我搜索“c”,否则将被执行;如果我搜索“b”,则会执行if语句。
答案 0 :(得分:5)
std::string::find()
的返回类型是无符号类型std::string::size_type
,如果字符为std::string::npos
,则返回std::string::size_type
(std::string::find()
可以表示的最大值)找不到,或者是字符串中找到的字符的第一个索引。
现在,您要将true
的结果与true
进行比较,从而将布尔值1
整体提升为整数值expected_char
。因此,当且仅当在位置1中找到字符expected_char
时(即,当它是字符串中的第二个字符时),您的条件才会得到满足。
如果您想检查字符word
是否在字符if (word.find(expected_char) != std::string::npos)
{
...
}
中,请使用
{{1}}
答案 1 :(得分:5)
请参阅this,您就会明白。有趣的部分:
std::string str("There are two needles in this haystack with needles.");
std::string str2("needle");
unsigned found = str.find(str2);
if (found != std::string::npos)
std::cout << "first 'needle' found at: " << found << '\n';
答案 2 :(得分:4)
find
返回一个位置,如果没有匹配则返回特殊值npos
。你需要测试:
word.find(expected_char) != word.npos
(恰好b
位于第1位,这也是true
的整数值。)