我正在写这个功能
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);
- 代码没有用它编译。为什么这样,我该如何解决?
答案 0 :(得分:5)
由于s
为const
- 合格,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;