std :: string :: npos值不是-1

时间:2014-03-17 20:43:10

标签: c++ string

本文档http://www.cplusplus.com/reference/string/string/npos/已经说过了 std :: string :: npos是-1。但是当我打印出价值时,却没有。这个价值架构是否依赖?

我的测试很简单

std::cout << std::string::npos << std::endl;

输出

4294967295

4 个答案:

答案 0 :(得分:5)

从您提供的链接:

  

此常量定义为值-1,由于size_t是无符号整数类型,因此它是此类型的最大可表示值。

答案 1 :(得分:1)

  

此常量的定义值为-1,因为size_t是   无符号整数类型,它是最大可能的代表   这种类型的价值。

他们说an unsigned integral type

答案 2 :(得分:0)

要尝试输出(size_t)-1的结果,请添加其他答案。您可以验证此值是否与std::string::npos相同。

答案 3 :(得分:0)

根据C ++标准,标准类npos的成员std::basic_string按以下方式声明

static const size_type npos = -1;

另一方面,类型名称size_type对应于某些无符号整数类型。所以你得到的是-1的内部表示,解释为无符号值。这意味着符号位被视为值位。