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

问题描述

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

解决方法

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

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

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