函数struct数组输入cin问题

时间:2013-04-22 09:24:56

标签: c++ arrays function struct

我无法弄清楚如何修复此代码。

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告诉我它已经超载了。

1 个答案:

答案 0 :(得分:0)

要解决您的问题,请在cin >>之后使用cin.ignore();

std::getline接受std::string作为其第二个参数。

它认为你通过getline(cin, a[x].book[y].price);将数字变量传递给它。