std::basic_string<CharT,Traits,Allocator>::npos

来自cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
成员函数
元素访问
迭代器
容量
修改器
搜索
操作
常量
basic_string::npos
非成员函数
I/O
比较
(C++20 前)(C++20 前)(C++20 前)(C++20 前)(C++20 前)(C++20)
数值转换
(C++11)(C++11)(C++11)
(C++11)(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
字面量
辅助类
推导指引 (C++17)

 
static const size_type npos = -1;

这是特殊值,等于 size_type 类型可表示的最大值。确切含义依赖于语境,但通常被期待字符串索引的函数用作字符串尾指示器,或被返回字符串索引的函数用作错误指示器。

注解

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

示例

#include <bitset>
#include <iostream>
#include <string>
 
int main()
{
    // 若找不到内容则字符串搜索函数返回 npos
    std::string s = "test";
    if(s.find('a') == std::string::npos)
        std::cout << "'test' 中没有 'a'\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';
}

输出:

'test' 中没有 'a'
st
00011

参阅

[静态]
特殊值。确切含义依赖于语境。
(std::basic_string_view<CharT,Traits> 的公开静态成员常量)