我需要一个std::string
中特定字符的迭代器,而不是从头开始循环。
这是最好的方法吗?
std::string s("abcdefg...");
size_t id = 5;
std::string::const_iterator it = s.begin();
std::advance(it, id - 1);
答案 0 :(得分:4)
您也可以这样做:
std::string::const_iterator it = s.begin() + (id-1);
虽然它应该具有或多或少相同的std::advance
性能,但是,如果it
是随机访问迭代器,advance
使用operator+
(否则它会转到循环;例如,对于list
迭代器)。
答案 1 :(得分:4)
由于std::string
的迭代器是随机访问,因此您可以直接执行此操作:
std::string::const_iterator it = s.begin() + (id-1);
(这是std::advance
最终扩展为随机访问迭代器的内容。)