我到处寻找,虽然我已经找到了如何将std::string
插入vector<char>
,但我找不到将char
插入std::vector<std::string>
的方法}
在文本编辑器项目中,我被限制使用字符串向量,而检查何时将字符输入到文本编辑器的东西必须接受char并返回char。
如果我知道我要在这个向量中插入一个角色,我可以打电话来实现这个目标吗?
作为旁注,我尝试执行lines.push_back(&c)
,其中我将行定义为std::vector<std::string>
,但它说:
candidate function not viable: no known
conversion from 'char' to 'const value_type' (aka 'const std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >') for 1st argument
_LIBCPP_INLINE_VISIBILITY void push_back(const_reference __x);
答案 0 :(得分:2)
如果你想用一个只有一个字符的新元素追加向量,你可以写
std::vector<std::string> v;
//...
v.push_back( { 1, 'A' } );
如果你想在你已经存在的向量元素上附加一个字符,你可以写
std::vector<std::string> v;
//...
v[i] += 'A';
或
std::vector<std::string> v;
//...
v[i].push_back( 'A' );
如果要在向量的某个现有元素的字符串中插入一个字符,可以编写
std::vector<std::string> v;
//...
v[i].insert( position, 1, 'A' );
答案 1 :(得分:1)
如果要将字符插入特定向量中的特定位置:
lines[i].insert(j, 1, c);
答案 2 :(得分:0)
希望下面的代码片段有帮助,
std::vector<std::string> line;
string s(1, c);
lines.push_back(s);
对于std :: string的向量。然后你将c char转换为std :: string并插入vector。
答案 3 :(得分:0)
您无法将字符串插入字符串向量中。您必须将该char转换为字符串。你可以用这种迂回的方式做到这一点:
string s = "";
char c = 'a';
s += c;
或更直接:
string s(1,c);
然后将字符串推入向量:
lines.push_back(s);
如果要将其插入特定位置,则必须计算位置,然后:
lines.insert(position, s);