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);