程序忽略输入的第一个字母

时间:2016-04-30 00:40:07

标签: c++

我已经看到了有关此问题的其他问题,但我似乎无法将这些问题纳入我的问题。

我的代码

cout << "Get User's input\n";
for (int i = 0; i < size; i++)
{
    cout << "Enter the author's name: ";
    cin.ignore();
    getline(cin,a[i].name); // Ariel the Mermaid
    cout << endl;

        for (int count = 0; count < size; count++)
        {
            cout << "Enter Title " << count + 1 << "  : ";
            cin.ignore();
            getline(cin,a[i].books[count].title); // Intro to Me
            if (a[i].books[count].title == "NONE")
                break;
            cout << "Enter Price " << count + 1 << "  : $";
            cin >> a[i].books[count].price; // 49.99
        }
    cout << endl;
}

当我输入“Ariel the Mermaid”时,当我开玩笑时,它给了我“riel the Mermaid”。此外,“我的介绍”给了“ntro to Me”。

此代码有什么问题?

2 个答案:

答案 0 :(得分:1)

您正在使用cin.ignore()跳过第一个字符。

cin.ignore()的好用是指cin >>之前getline()

例如:

cout << "Digit you age" << endl;
cin >> age;
cout << "Digit your full Name" << endl;
cin.ignore();
getline(cin,name);

这是因为当编译器到达时cin将停止从键盘读取,直到您按下回车键完成,然后getline()将捕获最后一个字符,即& #34; \ n&#34 ;.所以你必须cin.ignore()忽略最后一个字符。

答案 1 :(得分:0)

您对cin.ignore()的来电忽略了一个字符。此方法忽略作为参数提供的n个字符的计数。默认n1

您应该删除cin.ignore ()行。