用于偏移和返回的std :: string :: iterator

don*_*e26 16 c++ iterator stdstring

  • 我可以通过某个成员将迭代器设置为字符串中的位置5,还是必须执行for(i = 0; i < 5; ++i) iterator++;
  • 给定Iterator,如何将其转换为字符串中的数字偏移量?
  • 如果这不可能用std :: iterators可以提升吗?

迭代器< - >偏移量

For*_*veR 22

我可以通过某个成员将迭代器设置为字符串中的第5位

你可以使用std :: advance

std::advance(iterator, 5);
Run Code Online (Sandbox Code Playgroud)

要么

iterator += 5;
Run Code Online (Sandbox Code Playgroud)

给定Iterator,如何将其转换为字符串中的数字偏移量?

你可以使用std :: distance

std::distance(string.begin(), iterator);
Run Code Online (Sandbox Code Playgroud)

要么

iterator - string.begin()
Run Code Online (Sandbox Code Playgroud)


han*_*aad 5

std :: string迭代器是随机访问迭代器,它定义了+运算符.你可以得到一个位置5的迭代器begin(str) + 5.可以通过std::distance使用-operator来随机访问迭代器来计算偏移量.