为什么我无法在C++中将一个迭代器分配给另一个迭代器?

Why can't I assign one iterator to another in C++?

本文关键字:迭代器 一个 分配 另一个 C++ 为什么      更新时间:2023-10-16

我正在编写这个函数

vector<string> SplitIntoWords(const string& s) {
vector<string> v_str = {};
string::iterator str_b;
str_b = begin(s);
// TODO some action here
return v_str;
}

我需要声明一个迭代器,它等于字符串 s 的开头,这是我函数中的一个参数。

问题出在行str_b = begin(s);- 代码不使用它编译。为什么会这样,我该如何解决它?

由于sconst限定的,begin(s)返回一个string::const_iterator

string::const_iterator str_b;
str_b = begin(s);

或者更好的是,让我们auto从初始值设定项推断出str_b的类型:

auto str_b = begin(s);

s常量对象,所以

begin(s)

返回string::const_iterator,不能将string::const_iterator分配给string::iterator。你可以通过以下方式修复它

string::const_iterator str_b;