我写了一个程序,询问用户有多少辆汽车目录。该程序使用新创建一个动态阵列的许多汽车结构。接下来,它应该提示用户输入每个结构的制造和年份信息。为什么我应该在这里使用这个“while”表达式?那个表达意味着什么?
但是,我之前错过了“WHILE”表达式。程序直接运行到最后。该结果如下:
和预期的结果应该是
什么问题发生?当我需要用数字数据交替读取字符串时该怎么办?
这里是我的源代码:
#include <iostream>
#include <string>
using std::string;
// create car structure
struct car
{
string make;
int year;
};
int main()
{
using std::cout;
using std::cin;
using std::endl;
int num;
cout << "How many cars do you wish to catalog? ";
cin >> num;
while (cin.get() != '\n')
;
// create a dynamic array
car * catalog = new car [num];
//store
for (int i = 0; i < num; ++i)
{
cout << "Car #" << i + 1 << ":\n";
cout << "Please enter the make: ";
getline(cin, catalog[i].make);
cout << "Please enter the year made: ";
cin >> catalog[i].year;
while (cin.get() != '\n')
;
}
//display
cout << "Here is your collection: \n";
for (int i = 0; i < num; ++i)
{
cout << catalog[i].year << " " << catalog[i].make << endl;
}
delete [] catalog;
return 0;
}
那'while'声明跳到输入行结束的方式。 –
用'cin.ignore(numeric_limits :: max(),'\ n')' –
user4581301
可能会节省一点时间(但不能打字)谢谢! @Captain Obvlious –