微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以在没有原始字符串的情况下检查字符串迭代器是否等于其结束迭代器?

如何解决是否可以在没有原始字符串的情况下检查字符串迭代器是否等于其结束迭代器?

假设我有一些未知字符串 std::string::iterator itstr。我是否可以检查何时 it == str.end() 无法访问 strstr.end()

解决方法

从逻辑上讲,迭代器是一个指针。它不是索引和对容器的引用。因此,您无法获取有关包含迭代器项的容器的信息。

这在某种意义上类似于将数组作为指针传递的问题:当您将数组作为指针传递时,您也总是必须传递长度,因为指针不标识数组的结束位置。您的迭代器无法识别字符串的结束位置。

正如其他人指出的那样,在大多数情况下行得通的粗略方法是检查迭代器指向的字符是否为空字符。没关系,只要您的字符串不包含任何空字符;但请记住,如果您将字符串作为接口边界处理,其他人可能会传递其中包含 null 的字符串,因为这样做是完全合法的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。