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

ale*_*per 2 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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

眠りネ*_*ネロク 5

由于sconst-qualified,begin(s)返回一个string::const_iterator:

string::const_iterator str_b;
str_b = begin(s);
Run Code Online (Sandbox Code Playgroud)

或者更好,让我们从初始化程序中auto推导出str_b类型:

auto str_b = begin(s);
Run Code Online (Sandbox Code Playgroud)