我想标记一个字符串并添加到一个 vector 中,但我现在所能做的就是通过迭代器访问它们,如下所示。
vector<string> ExprTree::tokenise(string expression){
vector<string> vec;
std::string::iterator it = expression.begin();
while ( it != expression.end()) {
cout << "it test " << (*it) << endl;
vec.push_back(*it); // wrong!
it++;
}
当我输入 (10 + 10) * 5
输出是
(
1
0
+
1
0
)
*
5
这是我想要的,但我怎样才能真正将它们添加到 vector 中呢?
最佳答案
注意 std::string
的迭代器指向 char
, 所以 *it
不是 std::string
,而是一个 char
, 不能是 push_back
编入std::vector<std::string>
直接。
你可以把它改成
vec.push_back({*it}); // construct a temporary string (which contains *it) to be added
或使用 emplace_back
相反:
vec.emplace_back(1, *it); // add a string contains 1 char with value *it
关于c++ - 如何将字符串迭代器指向的数据推回到字符串 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43795086/