在 c/c++ 中循环扫描和打印数组

Scanning and printing an array in loop in c/c++

本文关键字:扫描 打印 数组 循环 c++      更新时间:2023-10-16

我想制作一个程序,从用户那里扫描输入的行数喜欢:

输入:

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;

所以你有一堆属性,namelnamenum,你想存储所有这些属性。

若要将多个对象存储为集合,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`
}

然而,这不是最好的解决方案。由于您的namelnamenum变量本质上表示一个人,因此最好定义一个来保存一个人的所有数据。该类可以称为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;
}

这当然可以进一步改进,但我会让你自己学习。