我开始编写用于查找子字符串的程序,但它不起作用并且它总是能找到子字符串。这是一种奇怪的行为,所以我编写了简单的程序:
#include <iostream>
#include <string>
using namespace std;
int main(){
string str;
str = "aaaa";
unsigned found = str.find("bbbb");
if(found!=std::string::npos){
cout << "I FOUND IT!!!!\n";
}
return 0;
}
它显示文本“我找到了!!!”我不明白这是怎么回事。
最佳答案
std::string::find
返回一个 size_t
std::string::npos
被定义为适合 size_t 的最大值,对于 64 位程序可能是 0xFFFFFFFFFFFFFFFF
。
当您将其转换为无符号整数时,这可能是 32 位,所以 0xFFFFFFFF
作为 0xFFFFFFFFFFFFFFFF != 0xFFFFFFFF
你会得到你看到的结果。
关于c++ - 标准 C++ 字符串库的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16349206/