我是C ++的新手,请原谅我的错误;我正在尝试创建一个程序,要求用户输入他们有多少兄弟姐妹,并根据他们的输入,写下兄弟的姓名年龄性别(用空格分隔)。
std::string name, age, gender;
int n;
std::vector<str::string> siblings;
std::cout << "How many siblings do you have? ";
std::cin >> n;
for (int a=0;a<n;a++){
std::string x;
std::cout << "Please enter info for sibling #" << (a+1) << ": ";
std::cin >> name;
std::cin >> age;
std::cin >> gender;
x += " " + name;
x += " " + age;
x += " " + gender;
siblings.emplace_back(x)
}
假设用户输入了“3”兄弟姐妹的信息:
Michael 14 Male
Sam 20 Female
Anna 8 Female
如何进入第一个兄弟姐妹的年龄,第二个兄弟姐妹的年龄,第三个兄弟姐妹的年龄?与名字相同?性别?
我试过
std::cout << age
但这只会给我一个结果。
答案 0 :(得分:3)
将数据存储在结构或类中,例如:
struct PeopleStats
{
std::string name, age, gender;
};
然后创建此类对象的向量,而不是字符串向量:
std::vector<PeopleStats> siblings;
然后输入循环,而不是将所有数据一起串在一个字符串中,将其存储在其中一个对象中,然后将该对象放入向量中。
for (int a=0;a<n;a++){
PeopleStats x;
std::cout << "Please enter info for sibling #" << (a+1) << ": ";
std::cin >> x.name;
std::cin >> x.age;
std::cin >> x.gender;
siblings.emplace_back(x)
}
然后你可以显示每个人的年龄:
for (auto const & sibling : siblings)
std::cout << sibling.age << '\n';
答案 1 :(得分:1)
您需要根据输入数字'n'动态创建一个数组,并存储每个兄弟姐妹的详细信息。
您也可以使用矢量。目前,您只使用字符串来获取年龄,名称等。因此,您只能看到一个输出。
答案 2 :(得分:1)
std::vector<std::string> names, ages, genders;
..
for (int a=0;a<n;a++){
std::string x;
std::cout << "Please enter info for sibling #" << (a+1) << ": ";
std::cin >> name;
std::cin >> age;
std::cin >> gender;
names.push_back(name);
ages.push_back(age);
genders.push_back(gender);
}
std::cout << names[0] << " " << names[1] ... and so on
答案 3 :(得分:1)
正如您所发现的那样,您在循环的每次迭代中都会覆盖以前的输入。因此,您需要单独保存每个兄弟的数据,并且您不知道将开始有多少兄弟姐妹。这是vector
的理想用例。让我们创建一个名为struct
的{{1}}来保存每个兄弟的数据。
sibling