Я не могу понять, как исправить этот код.Функция struct array input cin problems
void getInfo(Author a[], int size)
{
for(int x = 0; x < size; x++)
{
cout << "Enter the author's name: ";
getline(cin, a[x].name);
if(a[x].name == "NONE")
break; //Breaks the loop if the author has no further books
else
for(int y = 0; y < size; y++)
{
cout << "Enter title " << y+1 << " :";
getline(cin, a[x].book[y].title);
if(a[x].book[y].title == "NONE")
break;
else
cout << "Enter price " << y+1 << " : $";
cin >> a[x].book[y].price;
}
cout << endl;
}
}
Вот как это компилирует:
Get user's input:
Enter the author's name: John Smith
Enter title 1: How to Tie a Shoe
Enter price 1: 20
Enter title 2: Enter price 2:
Может кто-то пожалуйста, помогите мне понять, как исправить эту петлю. Когда я пробую getline(cin, a[x].book[y].price);
, визуальная студия говорит мне, что она перегружена.
Попробуйте 'cin.ignore (1, '\ n');' после того, как вы прочитаете цену. И, возможно, попробуйте некоторые фигурные скобки вокруг этого блока или лучше все-таки избавиться от else целиком (тот, что в for-loop). – WhozCraig
попробуйте 'cin.ignore (numeric_limits :: max(), '\ n')'. читает столько символов, пока вы не получите '\ n' и отбросит его. –