C++ 使用std::string迭代器查找它的开始和结束';s弦
给定一个std::string迭代器,是否可以确定字符串的起点和终点?假设我无法访问string对象,因此无法调用string.begin()和string.end(),我所能做的就是递增或递减迭代器并测试值 谢谢,C++ 使用std::string迭代器查找它的开始和结束';s弦,c++,iterator,stdstring,C++,Iterator,Stdstring,给定一个std::string迭代器,是否可以确定字符串的起点和终点?假设我无法访问string对象,因此无法调用string.begin()和string.end(),我所能做的就是递增或递减迭代器并测试值 谢谢, Phil简短的答案是否定的。长的答案是,因为迭代器不需要知道正在迭代的容器或范围,只需要知道 能够跳转到下一个元素(inc或dec到下一个或上一个) 取消对其自身的引用,以显示对其所指向的值的引用 当然,将自己与其他迭代器进行比较,最重要的是某种“结束”迭代器 此外,某些类型的
Phil简短的答案是否定的。长的答案是,因为迭代器不需要知道正在迭代的容器或范围,只需要知道
- 能够跳转到下一个元素(inc或dec到下一个或上一个)
- 取消对其自身的引用,以显示对其所指向的值的引用
- 当然,将自己与其他迭代器进行比较,最重要的是某种“结束”迭代器
- 对于字符串的端点: 假设内部字符串以null结尾。然后通过取消对迭代器的引用,查看它们是否为“\0”,以确定下一个位置是终点。但对于其他以非空结尾的字符串,不可能了解此类信息
- 对于字符串的起点: 没有办法做这种事
但是如果你在Visual C++平台上工作,也许你可以使用一些类似的黑客攻击方法来控制它的容器,但是这是非常危险的:
// it is the passed in string::iterator parameter.
if (it._Has_container()) {
string* strRef = (string*)it._Mycont;
}
是的,您确实需要指向末尾或开头的迭代器来比较您当前的迭代器,这可以在您定义字符串时确定?