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

C++ std::string::npos值不是-1,c++,string,C++,String,这是医生说的 std::string::npos是-1。但当我打印出值时,它不是。这个值依赖于体系结构吗 我的测试很简单 std::cout << std::string::npos << std::endl; 从您提供的链接: 此常量的定义值为-1,因为size_t是无符号整数类型,所以它是此类型的最大可能表示值 该常数的定义值为-1,这是因为大小为 一种无符号整数类型,它是可能表示的最大值 此类型的值 他们说一个无符号整数类型来添加其他答案,试图输出(size\u

这是医生说的 std::string::npos是-1。但当我打印出值时,它不是。这个值依赖于体系结构吗

我的测试很简单

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

从您提供的链接:

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

该常数的定义值为-1,这是因为大小为 一种无符号整数类型,它是可能表示的最大值 此类型的值


他们说
一个无符号整数类型

来添加其他答案,试图输出
(size\u t)-1的结果。您可以验证这个值与<代码> STD::String::NPOS .< /P> < P>根据C++标准数据成员<代码> NPOS <代码>标准类<代码> STD::Basic字符串被声明为以下方式

static const size_type npos = -1;

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

这个问题似乎离题了,因为它是关于仔细阅读文档链接的。@juanchopanza,你说得对。最后一句话我没有想清楚。
static const size_type npos = -1;