std::basic_string::npos

来自cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
 
static const size_type npos = -1;

这是特殊值,等于 size_type 类型可表示的最大值。准确含义依赖于语境,但通常,期待 string 下标的函数以之为字符串尾指示器,返回 string 下标的函数以之为错误指示器。

[编辑] 注意

虽然定义使用 -1 ,由于有符号到无符号隐式转换,且 size_type 是无符号整数类型, npos 的值是其所能保有的最大正值。这是指定任何无符号类型的最大值的可移植方式。

[编辑] 示例

#include <iostream>
#include <bitset>
#include <string>
 
int main()
{
    // 若找不到内容则字符串搜索函数返回 npos
    std::string s = "test";
    if(s.find('a') == std::string::npos)
        std::cout << "no 'a' in 'test'\n";
 
    // 以字符串子集为参数的函数以 npos 为“所有到达终点的方式”指示器
    std::string s2(s, 2, std::string::npos);
    std::cout << s2 << '\n';
 
    std::bitset<5> b("aaabb", std::string::npos, 'a', 'b');
    std::cout << b << '\n';
}

输出:

no 'a' in 'test'
st
00011