// my_structur.cpp -- 创建结构体数组,循环输入结构体元素。
// 1 创建结构体;
// 2 创建结构体数组;
// 3 循环输入结构体元素时保证始终输入字符串或数字;
// 3.1 while (1) {}
#include <iostream>
#include <cstring>
struct inflatable // structure declaration
{
char name[20];
float volume;
double price;
};
int main()
{
using namespace std;
// my structure array test
inflatable guest_array[3];
for (int i = 0; i < 3; i++)
{
cout << "Please input name: " << endl;
// cin.getline(guest_array[i].name, 20);
// cin>> noskipws >> guest_array[i].name;
cin.get(guest_array[i].name, 20);
cout << "Please input volume: " << endl;
while (!(cin >> guest_array[i].volume))
{
cout << "无效输入! 请重新输入数字:" << endl;
cin.clear();
cin.ignore(1024, '\n');
}
// while (!scanf("%d", &guest_array[i].volume) || guest_array[i].volume < 0)
// {
// printf("无效输入!请重新输入:\n");
// scanf("%*[^\n]");
// scanf("%*c");
// }
cin.get();
cout << "Please input price: " << endl;
cin >> guest_array[i].price;
cin.get();
cout << "name" << i << ": " << guest_array[i].name << endl;
cout << "volume: " << guest_array[i].volume << endl;
cout << "price: " << guest_array[i].price << endl;
}
return 0;
}
上述代码中,需要联合使用cin.clear()和cin.ignore(1024, '\n');