我无法弄清楚如何修复此代码。
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);
时,visual studio告诉我它已经超载了。
答案 0 :(得分:0)
要解决您的问题,请在cin >>
之后使用cin.ignore();
。
std::getline
接受std::string
作为其第二个参数。
它认为你通过getline(cin, a[x].book[y].price);
将数字变量传递给它。