将字符串存储到矢量中

时间:2015-05-10 03:01:11

标签: c++ string sorting vector stl

错误表示没有匹配函数可以调用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];
    }

}

3 个答案:

答案 0 :(得分:6)

由于您的listvector string,将单char推入其中将无效:您应该将其设为{{1}的向量s,或阅读char s:

string

请注意,string input; while(cin>>input) { list.push_back(input); } 相当可疑:仅当list[99-i]具有完全list个元素时才会有效,并且仅当您为99更改i--时才有效。否则,在访问向量末尾之后的元素或访问负索引处的元素时,您将获得未定义的行为。

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

答案 1 :(得分:2)

嗯,错误是正确的。但是,它有助于阅读所有

班级vector<string>的功能为push_back(const string&)

它没有函数push_back(char)

我不知道为什么你要提取个人char但是存储整个string;不要这样做。

答案 2 :(得分:0)

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