读书人

std:string:npos的值是多少?有定义吗

发布时间: 2013-06-25 23:45:41 作者: rapoo

std::string::npos的值是多少?有定义吗?
如题:
据说是大于所有有效下标的一个值,那这个值有定义是多少吗?

如果在程序中把-1作为它来用可以吗?
例如:

if(string.find() == -1)
{
cout <<"no found.";
}
[解决办法]
ISO C++03
21.3
...
static const size_type npos = -1;
...
相当于static_cast<size_type>(-1)。应该注意这里的size_type是allocator决定的无符号数。
LZ这么做可以,不过还是写成npos明确一点。

[解决办法]
-1,但是完全没有必要直接和这个-1进行比较。
[解决办法]
永远不要依赖于npos的实际值。

[解决办法]
不同的编译系统,NOPS的值是不同的,通常为-1。最好把它当作常量来使用。
[解决办法]
我觉得还是直接用npos比较好。。
[解决办法]


// NB: This is an unsigned type, and thus represents the maximum
// size that the allocator can hold.
/// Value returned by various member functions when they fail.
static const size_typenpos = static_cast<size_type>(-1);


自己右键 就可以查头文件
看头文件里的注解
//注:这是一个无符号的类型,是tring容易可容纳的最大大小。


[解决办法]
msdn中是这样定义的:static const size_type npos = -1;

读书人网 >C++

热点推荐