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

时间:2018-02-23 11:03:56

标签: c++ iterator

我正在写这个功能

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); - 代码没有用它编译。为什么这样,我该如何解决?

2 个答案:

答案 0 :(得分:5)

由于sconst - 合格,begin(s)会返回string::const_iterator

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

或更好,让auto从初始化程序中推断出str_b的类型:

auto str_b = begin(s);

答案 1 :(得分:3)

s const 对象,所以

begin(s)

返回string::const_iterator,您无法将string::const_iterator分配给string::iterator。您可以通过

修复它
string::const_iterator str_b;