【发布时间】:2019-11-29 16:49:10
【问题描述】:
尽管输入了“y”,但代码不接受更多输入。 这么多部分没有产生所需的结果。
代码块:
char ch='y';
of.open("FileHandling.txt", ios::app); //opening file.
while(ch=='y')
{
cout<<"\n\n\t\tEnter contents in the file : \n\n\t\t";
getline(cin, content);
of<<content;
cout<<"\n\n\t\tWish to write more ( y / n ) ? : ";
cin>>ch;
}
of.close(); //closing file.
程序应根据用户的意愿接收未完成的输入。 然后它应该显示文件的内容。它正在显示内容。
【问题讨论】:
-
在同一流上混合面向行的输入 (
getline()) 和格式化输入 (cin >> ch) 会导致奇怪的交互,因为不同的方法处理换行符和其他空格的方式不同。例如,当读取cin >> ch并且用户输入Y后跟一个换行符,然后是Hello,那么ch将具有值Y,换行符将导致getline返回没有内容,H将被cin >> ch读取,因此该行的其余部分将被丢弃。简单的解决方案:使用一种方法或另一种方法从cin读取所有输入。不要混合它们。