【问题标题】:push_back in vector<string> showing errorvector<string> 中的 push_back 显示错误
【发布时间】:2020-12-03 06:02:28
【问题描述】:

我已插入一个字符串,我希望将每个字符分别插入向量字符串中。在使用 push_back 函数时,我收到以下错误:

错误:没有匹配的函数调用
'std::vector&lt;std::__cxx11::basic_string&lt;char&gt; &gt;::push_back(__gnu_cxx::__alloc_traits&lt;std::allocator&lt;char&gt;, char&gt;::value_type&amp;)' 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] << " ";
    }
}

非常感谢您

【问题讨论】:

  • 你真的想要一个字符串向量吗?听起来你想要一个字符向量std::vector&lt;char&gt;
  • Push_back 函数需要一个字符串而不是字符,str[i] 是一个字符而不是字符串

标签: c++ string vector stl push-back


【解决方案1】:

问题是你有一个向量并且你试图用一个字符而不是一个字符串来调用 push_back。除非该类型可隐式转换为字符串,否则您不能将 x 类型的值 push_back 到您的向量中,不幸的是,没有采用 char 的 std::string 的构造函数。

您可以通过将 vector 设为 vector 或使用字符串而不是 char 调用 push_back 来解决此问题。

选项 1:将 chr 设为 char 向量而不是字符串向量

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 更改代码以使用字符串而不是字符

vector<string> chr;
for(int i = 0; i < str.size(); i++){
  chr.push_back(str.substr(i, i+i));
}

根据您正在做的事情,选项 1 可能就是您想要的。如果你真的需要一个字符串向量,选项 2 将编译。

【讨论】:

  • 我最终调用了一个获取字符串函数。字符串 getString(char x) { 字符串 s(1, x);返回 s; }
猜你喜欢
  • 1970-01-01
  • 2017-09-21
  • 2013-12-19
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多