我已经看到了有关此问题的其他问题,但我似乎无法将这些问题纳入我的问题。
我的代码
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”。
此代码有什么问题?
答案 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
个字符的计数。默认n
为1
。
您应该删除cin.ignore ()
行。