我有这个代码的简单部分:
int pch = name.find("#");
if(pch == name.npos) continue;
Run Code Online (Sandbox Code Playgroud)
当in name.find未找到时"#",pch等于-1.name.npos相反,如果我打印出来,是4294967295为什么在这种情况下,如果pch是-1,name.npos是4294967295,程序进入if状态?
string::npos表示找不到位置.它通常用常数值表示-1.此常量定义为值-1,由于size_t是无符号整数类型,因此它是此类型的最大可表示值.
find不成功,则返回-1.所以,两者是平等的,在你的情况下,并且if满意.
现在,回答
name.npos相反,如果我打印它,是4294967295
因为,string::npos是类型的size_t通常是typedef对unsigned类型.的-1,它被用来初始化一个unsigned类型将被存储为打印和最大可能的无符号值.