在 c/c++ 中循环扫描和打印数组
Scanning and printing an array in loop in c/c++
我想制作一个程序,从用户那里扫描输入的行数喜欢:
输入:
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;
所以你有一堆属性,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;
}
这当然可以进一步改进,但我会让你自己学习。
相关文章:
- 如何循环打印顶点结构
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 如何在c++中打印目录
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 在线编译器中的分段C++没有打印消息
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 如何将结构插入到集合中并打印集合的成员
- 在循环C++中指定字符串之后,不会打印该字符串
- 以螺旋方式打印矩阵的程序.(工作不好)
- 从控制台中删除最后打印的元素
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 如何仅使用对象名称打印特定于对象的成员
- 回溯C++不打印函数,因此文件
- 在一定长度后从数组中打印时缺少整数
- 为什么这个 c++ 代码打印出长度 5,当我打印出字符串时,程序会自动终止?
- 为什么我不能扫描和打印整数?
- 比scanf和printf更有效的扫描和打印整数的方法
- 如何扫描外来字符(如 ä、ß、ő、ű)并将它们打印到控制台窗口?
- EOF-扫描和打印