gpt4 book ai didi

c++ - 不同大小的 std::string::npos

转载 作者:太空狗 更新时间:2023-10-29 19:45:56 31 4
gpt4 key购买 nike

我编写了一个程序,使用 find_last_of 方法在字符串中查找字符。

// ...
unsigned found;
found = name.find_last_of(character);
if (found == std::string::npos) {
std::cout << "NOT FOUND" << std::endl;
}
// ...

我在两台机器上编译了代码,它只在其中一台(PC1)上运行。我调试了它,发现 std::string::npos 对于 PC1 和 PC2 是不同的。

如果没有找到字符,则返回两台机器的 find_last_of == 4294967295 的值。

PC1:

std::string::npos == 4294967295

PC2:

std::string::npos == 18446744073709551615

更多测试:

PC1:

sizeof(size_t) == 4

PC2:

sizeof(size_t) == 8

第一台机器使用 32 位操作系统,第二台机器使用 64 位操作系统。

我应该使用什么来比较 find_last_of 方法返回的值以使其在两台机器上都能正常工作?

最佳答案

What should I use to compare the value returned by the find_last_of method to make it work on both machines?

std::string::npos,位置类型(found)应该是size_t

常量的具体大小在不同的架构上可能不同,但这与您无关。

npos is a static member constant value with the greatest possible value for an element of type size_t.

关于c++ - 不同大小的 std::string::npos,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21183331/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com