我想创建一个程序,从用户扫描输入行数 喜欢:
输入:
3
zyad sabry 322
ahmed alaa 11
john adams 122
输出:
zyad sabry 322
ahmed alaa 11
john adams 122
这是我的代码:
scanf("%d",&n);
for(i=0;i<n;i++)
cin >> name >> lname >> num ;
for(i=0;i<n;i++)
cout << name << " " << lname << " " << num << endl;
return 0;
答案 0 :(得分:3)
所以你有很多属性,name
,lname
和num
,你想要存储所有属性。
要将多个对象存储为集合,std::vector
通常是一个很好的容器。您可以像这样使用它来解决您的问题:
std::vector<std::string> names; // this vector contains each name
std::vector<std::string> lnames; // this vector contains each lname
std::vector<std::string> nums; // this vector contains each num
for(i=0;i<n;i++)
{
std::string name, lname, num;
std::cin >> name >> lname >> num;
names.push_back(name); // adds `name` to the `names` vector
lnames.push_back(lname); // adds `lname` to the `lnames` vector
nums.push_back(num); // adds `num` to the `nums` vector
}
for(i=0;i<n;i++)
{
std::cout << names.at(i) << " "; // prints the name at index i in `names`
std::cout << lnames.at(i) << " "; // prints the corresponding lname in `lnames`
std::cout << nums.at(i) << std::endl; // prints the corresponding num in `nums`
}
然而,这不是最好的解决方案。由于您的name
,lname
和num
变量基本上代表人,因此最好定义一个类来保存所有一个人的数据。该类可以称为Person
,例如:
class Person
{
public:
std::string name;
std::string lname;
int num;
};
现在我们有Person
类,我们可以简单地定义一个向量来保存所有Person
个实例:
std::vector<Person> persons;
for(i=0;i<n;i++)
{
Person person; // creates a new Person object
// now let's read the name, lname and num for that person:
std::cin >> person.name;
std::cin >> person.lname;
std::cin >> person.num;
// and add the person to the list of persons
persons.push_back(person);
}
要从向量中打印出来的人,我们现在可以简单地执行此操作:
for(i=0;i<n;i++)
{
std::cout << persons.at(i).name << " " << persons.at(i).lname << " " << persons.at(i).num << std::endl;
}
这当然可以进一步改善,但我会让你自己学习。