如何解决vector <string>中的push_back显示错误
我插入了一个字符串,我希望将每个字符分别插入向量字符串中。使用push_back
函数时,出现以下错误:
错误:没有匹配功能调用
'std::vector<std::__cxx11::basic_string<char> >::push_back(__gnu_cxx::__alloc_traits<std::allocator<char>,char>::value_type&)' 27 | color.push_back(str[i]);**
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
int t;
cin >> t;
string str;
char in;
while(t--){
cin >> str;
sort(str.begin(),str.end());
vector<string> chr;
for (int i = 0; i < str.size(); i++){
chr.push_back(str[i]);
}
for (int i = 0; i < chr.size(); i++)
cout << chr[i] << " ";
}
}
非常感谢您
解决方法
问题是您有一个向量,并且试图用字符而不是字符串来调用push_back。除非将x类型的值隐式转换为字符串,否则不能将x类型的值压入向量,但不幸的是,没有一个带有char的std :: string构造函数。
您可以通过将vector
选项1:将chr设为char的向量,而不是string的向量
vector<char> chr;
for(int i = 0; i < str.size(); i++){
chr.push_back(str[i]);
}
或
vector<char> chr(str.begin(),str.end());
选项2:使用push_back更改代码以使用字符串而不是char
vector<string> chr;
for(int i = 0; i < str.size(); i++){
chr.push_back(str.substr(i,i+i));
}
基于您正在做的事情,选项1可能就是您想要的。如果确实需要向量字符串,则选项2将编译。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。