-3

在python中,当字符不在字符串中时返回'-1':

a = "hello"
a.find("a")

结果 : -1

但在 C++ 中,它返回一个奇怪的数字!!!:

string a;
a = "hello";
a.find("a");

结果 : 4294967295

它是什么???所有字符串中的所有字符都相等吗???我怎么能说一个特殊的字符串不在文本中做一些工作?

我在 python 中知道,但在 C++ 中不知道...

4

3 回答 3

6

它返回std::string::npos,当 characted 不成立时stringstd::string::npos由标准定义,如

static const size_type npos = -1;
于 2013-04-19T13:37:36.200 回答
3

它是string::npos。您应该使用以下内容来决定是否可以在给定字符串中找到特定字符串:

  size_t foundIndex = a.find("a");
  if ( foundIndex != string::npos)
  {
       cout << "found" <<endl;
  }
于 2013-04-19T13:38:33.750 回答
2

如果没有找到特殊字符串,该find()方法将返回。string::npos因此,您应该始终使用以下语句来检查find()结果:

string::size_type index = str.find("value");
if (string::npos != index)
{
   // Do something.
}
于 2013-04-19T13:41:20.353 回答