在C ++中返回string.find()的数量

时间:2013-04-19 13:36:31

标签: c++

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

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

结果:-1

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

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

结果:4294967295

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

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

3 个答案:

答案 0 :(得分:6)

如果std::string::npos中没有成立,则会返回stringstd::string::npos由标准定义,如

static const size_type npos = -1;

答案 1 :(得分:3)

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

  size_t foundIndex = a.find("a");
  if ( foundIndex != string::npos)
  {
       cout << "found" <<endl;
  }

答案 2 :(得分:2)

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

string::size_type index = str.find("value");
if (string::npos != index)
{
   // Do something.
}