C ++动态结构数组用户输入

时间:2016-03-21 19:14:50

标签: c++

我正在尝试使用Stephen Prata" C ++ Primer Plus第6版自己学习C ++。第5章练习中的一个要求我设计一个动态结构,其中包含许多汽车的名称和年份。所有这些信息都由用户输入。 我的问题是:

1)我可以在结构中使用字符串对象而不是char数组吗?如果是的话,你能告诉我怎么做吗?

2)如何让用户输入包含多个单词的名称?我一直在尝试使用get(),getline()等,但我无法使其正常工作。

3)我知道这是一个简单的程序,但代码可以用什么方式进行改进?

提前谢谢你。

#include<iostream>
using namespace std;

const int ArSize = 20;

struct automobile
{
    char name[ArSize];
    int year;
};

int main()
{
cout << "How many cars do you wish to catalogue?\n";
int number;
cin >> number;

automobile * car = new automobile[number];
int n = 0;

while (n < number)
{
    cout << "Car #" << n+1 << ":\n";
    cout << "Please enter the make: ";
    cin >> car[n].name; cout << endl;

    cout << "Please enter the year: ";
    cin >> car[n].year; cout << endl;
    n++;
}

    cout << "Here is your collection:\n";

int m = 0;
while (m < number)
{
    cout << car[m].year << " " << car[m].name << endl;
    m++;
}
delete [] car;
return 0;
}

1 个答案:

答案 0 :(得分:1)

  

1)我可以在结构中使用字符串对象而不是char数组吗?如果是的话,你能告诉我怎么做吗?

是的,只需提供std::string类型的成员变量:

struct automobile
{
    std::string name;
    int year;
};
  

2)如何让用户输入包含多个单词的名称?我一直在尝试使用get(),getline()等,但我无法使其正常工作。

使用std::getline()

cout << "Please enter the make: ";
std::getline(std::cin,car[n].name); cout << endl;
  

3)我知道这是一个简单的程序,但代码可以用什么方式进行改进?

只要您有工作代码,就可以在SE Code Review更好地询问此类问题。对于Stack Overflow,这通常只是呈现为太宽