迭代器到std :: string中的特定字符

时间:2011-12-16 10:15:31

标签: c++ string iterator

我需要一个std::string中特定字符的迭代器,而不是从头开始循环。

这是最好的方法吗?

std::string s("abcdefg...");
size_t id = 5;
std::string::const_iterator it = s.begin();
std::advance(it, id - 1);

2 个答案:

答案 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最终扩展为随机访问迭代器的内容。)