string :: npos是什么意思?

时间:2011-02-23 19:49:12

标签: c++

以下陈述是什么意思?

    string s="Joe Alan Smith"";
    cout << (s.find("Allen") == string::npos) << endl; 

3 个答案:

答案 0 :(得分:14)

实际上string::find()会返回找到的字符串的位置,但是如果它找不到给定的字符串,则返回string::npos,其中npos表示无位置

npos是无符号整数值,标准将其定义为-1(带符号表示),表示无位置。

//npos is unsigned, that is why cast is needed to make it signed!
cout << (signed int) string::npos <<endl; 

输出:

-1

请参阅Ideone:http://www.ideone.com/VRHUj

答案 1 :(得分:1)

http://www.cplusplus.com/reference/string/string/npos/

  

作为返回值,它通常用于表示失败。

换句话说,如果在给定的字符串s中找不到字符串'Allen',则打印出来。

答案 2 :(得分:1)

.find()方法如果在搜索到的字符串中找不到目标字符串,则返回string::npos。它是一个整数,其值不能表示“找到”索引值,通常为-1。有效索引值是一个整数&gt; = 0,表示找到目标字符串的索引。