C++ 如何区分是否在最后一个位置未找到字符?

C++ 如何区分是否在最后一个位置未找到字符?,c++,unsigned-integer,C++,Unsigned Integer,在字长2^n的系统中,有效字符串位置的编号范围为0到2^n-1。如果say string::find()在最后一个位置找到字符,它将返回2^n-1。如果没有找到全部,则返回2^n-1, 这相当于-1。如何区分这两种情况 这就是我在删除的问题的后半部分中所问的问题 除非字符串很长,否则字符串末尾的值应与未找到的值不同。如果字符串::find返回的值等于std::string::npos,则在字符串中找不到短语。如果字符串中有那么多字符,则可能需要重新考虑设计。:)至于你的问题的解决方案,考虑使用它

在字长
2^n
的系统中,有效字符串位置的编号范围为0到
2^n-1
。如果say string::find()在最后一个位置找到字符,它将返回
2^n-1
。如果没有找到全部,则返回
2^n-1
, 这相当于-1。如何区分这两种情况

这就是我在删除的问题的后半部分中所问的问题

除非字符串很长,否则字符串末尾的值应与未找到的值不同。如果字符串::find返回的值等于
std::string::npos
,则在字符串中找不到短语。

如果字符串中有那么多字符,则可能需要重新考虑设计。:)至于你的问题的解决方案,考虑使用它,因为它使用迭代器。有效的字符串位置最多是<代码>最大值()/代码>不能是2 ^ n,因为你不能写下这个数字,所以-1是自动的。available@harold但是2的补码中的-1产生一个所有位都已设置的值,哪个是宽度为2^n-1的最高可表示值,不是吗?@Downvoter是的,这就是重点
max_size()
可能是-1(尽管我经常看到它是-2),但这意味着最大位置比该值小一个,因此-1可用为“无效”marker@Some程序员伙计,你知道,不久前比尔·盖茨先生告诉我们,可能没有人希望使用超过100万字节:)。此外,你可能还记得2000年危机。