0
在字长为2^n
的系统中,有效的字符串位置从0到2^n-1
被编号。如果说string :: find()找到最后一个位置的字符,它会返回2^n-1
。如果没有找到它,则返回2^n-1
, ,这相当于-1。如何区分这两种情况?如何区分是否找不到我们在上一个位置找到的字符?
这是我已删除的问题的后半部分问 https://stackoverflow.com/questions/41919438/why-size-t-is-unsigned?noredirect=1#comment71022993_41919438
如果字符串中包含许多字符,则可能需要重新考虑设计。 :)至于你的问题的解决方案考虑使用['std :: find'](http://en.cppreference.com/w/cpp/algorithm/find),因为它使用迭代器。 –
有效的字符串位置高达'max_size()'不能是2^n,因为你不能写下这个数字,所以-1可以自动得到 – harold
@harold但是2的补码-1会产生一个值位设置,这是具有该宽度并且等于2^n ** - 1 **的最高可表示值,不是吗? – Downvoter