我是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”,中间有一个空格,但每当我放一个空格时,程序就不会按照我想要的方式运行,也不会问用户两次。
答案 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了解详情。