如何将多个输入存储到列表C ++中

时间:2014-01-19 07:11:50

标签: c++

我是C ++编程的新手,正在尝试创建一个询问用户问题的程序。例如,

std::string siblings;
std::cout << "How many siblings do you have?";  //Let's say the user inputs 2
std::cin >> siblings;

for (int x=0;x<n;x++){
    std::string current;
    std::string sibling_info;
    std::cout << "What is the name + age of sibling #" << (x+1) << ": ";
    std::cin >> current;                    
    sibling_info.emplace_back(current);

我希望用户输入“John 13”,中间有一个空格,但每当我放一个空格时,程序就不会按照我想要的方式运行,也不会问用户两次。

3 个答案:

答案 0 :(得分:1)

来自cin的输入是描绘的包含空格的白色空间。 std::cin >> current仅存储键入的第一个单词。为了获得两个单词,您必须两次调用cin,或者切换到另一种获取用户输入的方式。

std::string current;
std::string age;
std::string sibling_info;
std::cout << "What is the name + age of sibling #" << (x+1) << ": ";
std::cin >> current; //you were missing a semicolon :p
std::cin >> age;    //added
current += " " + age;      //added       
sibling_info.emplace_back(current);

或使用getline(您需要#include<string>

std::string current;
std::string sibling_info;
std::cout << "What is the name + age of sibling #" << (x+1) << ": ";
current = getline(cin,current); //changed                      
sibling_info.emplace_back(current);

答案 1 :(得分:1)

一种方法:

std::string current[2];
...
std::cin >> current[0] >> current[1];
sibling_info.emplace_back(current[0]+" "+current[1]);

答案 2 :(得分:1)

功能emplace_back()可用于vector,但不能用于string。所以你需要改变

std::string sibling_info;

std::vector<std::string> sibling_info;

然后你可以打电话:

sibling_info.emplace_back(current);

同时,它可以让您输入任意数量的多个输入。

查看here了解详情。