C++ string::npos

npos是一个常数,表示size_t的最大值(Maximum value for size_t)。许多容器都提供这个东西,用来表示不存在的位置,类型一般是std::container_type::size_type。

size_t npos = -1; 
cout << "npos: " << npos << endl; 
cout << "size_t max: " << numeric_limits<size_t>::max() << endl;

执行结果为:

             npos:           4294967295

             size_t max:  4294967295

可见他们是相等的,也就是说npos表示size_t的最大值

npos可以表示string的结束位子,是string::type_size 类型的,也就是find()返回的类型。find函数在找不到指定值得情况下会返回string::npos。

if(b.find(i)!=string::npos)

2、string::npos作为string的成员函数的一个长度参数时,表示“直到字符串结束

string tmpname = filename;  
tmpname.replace(idx + 1, string::npos, "xxx");//用str替换指定字符串从起始位置pos开始长度为len的字符 ,string& replace (size_t pos, size_t len, const string& str); 

3.注意npos的类型

int idx = str.find("abc");
if (idx == string::npos)

idx的类型被定义为int,这是错误的,它必须定义为 string::size_type。

要想判断 find() 的结果是否为npos,最好的办法是直接比较:
if (str.find(“abc”) == string::npos) { … }

4.string 类提供了 6 种查找函数,每种函数以不同形式的 find 命名。这些操作全都返回 string::size_type 类型的值,以下标形式标记查找匹配所发生的位置;或者返回一个名为 string::npos 的特殊值,说明查找没有匹配。string 类将 npos 定义为保证大于任何有效下标的值。

https://blog.csdn.net/JIEJINQUANIL/article/details/51789682

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值