我正在尝试使用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;
}
答案 0 :(得分:1)
1)我可以在结构中使用字符串对象而不是char数组吗?如果是的话,你能告诉我怎么做吗?
是的,只需提供std::string
类型的成员变量:
struct automobile
{
std::string name;
int year;
};
2)如何让用户输入包含多个单词的名称?我一直在尝试使用get(),getline()等,但我无法使其正常工作。
cout << "Please enter the make: ";
std::getline(std::cin,car[n].name); cout << endl;
3)我知道这是一个简单的程序,但代码可以用什么方式进行改进?
只要您有工作代码,就可以在SE Code Review更好地询问此类问题。对于Stack Overflow,这通常只是呈现为太宽。