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

Iterator to a specific character in a std::string

本文关键字:字符 迭代器 std string      更新时间:2023-10-16

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

这是最好的方法吗?

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

你也可以这样做:

std::string::const_iterator it = s.begin() + (id-1);

虽然它应该与std::advance或多或少具有相同的性能,因为,如果it是随机访问迭代器,advance使用operator+(否则它采用循环;例如list迭代器)。

由于std::string的迭代器是随机访问的,您可以直接这样做:

std::string::const_iterator it = s.begin() + (id-1);

(std::advance最终扩展为随机访问迭代器)