【问题标题】:Storing a string into a vector将字符串存储到向量中
【发布时间】:2015-07-20 18:04:14
【问题描述】:

错误表明没有匹配的函数可以调用push_back()

我包含了<vector>,所以我不明白为什么会发生这个错误。如果您还可以告诉我如何接收一个字符串并将其存储到一个向量中,那将非常有帮助!

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{
    vector<string> list;
    char input;
    while(cin>>input)
    {
        list.push_back(input);
    }
    for(int i=0;list.size();i--)
    {
        cout<<list[99-i];
    }

}

【问题讨论】:

    标签: c++ string sorting vector stl


    【解决方案1】:

    由于您的liststringvector,因此将单个chars 推入其中是行不通的:您应该将其设为chars 的向量,或读取strings :

    string input;
    while(cin>>input) {
        list.push_back(input);
    }
    

    请注意,list[99-i] 相当可疑:仅当 list 恰好具有 99 元素并且仅当您将 i-- 更改为 i++ 时,它才会起作用。否则,在访问超过向量末尾的元素或访问负索引处的元素时,您将获得未定义的行为。

    如果您想从后面打印列表,请改用list[list.size()-1-i],并使用i++ 代替i--,否则循环不会停止。

    【讨论】:

    • 我修复了我的代码,但我仍然遇到一些错误:#include #include #include using namespace std; int main() { 向量 列表;字符串输入; while(cin>>input&& input!='\n') { list.push_back(input); } for(int i=0;i
    • @Darraptor 与"\n" 的比较应该被删除(demo)。无论如何它都没有用,因为运算符&gt;&gt;'\n' 视为分隔符,因此它不会将其放入字符串中。如果要检查空行,请使用以下条件:in&gt;&gt;input&amp;&amp; input.size() != 0
    【解决方案2】:

    嗯,错误是正确的。不过,阅读所有内容会有所帮助!

    vector&lt;string&gt;有一个函数push_back(const string&amp;)

    它没有函数push_back(char)

    我不知道您为什么要提取单个 chars 而是存储整个 strings;不要那样做。

    【讨论】:

      【解决方案3】:

      因为您试图将 char 放入字符串向量中。 将输入更改为字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-01
        • 1970-01-01
        相关资源
        最近更新 更多