C++ 用c+进行文件读写+;
在运行程序时,我注意到只有第一次迭代的值被重复了5次。C++ 用c+进行文件读写+;,c++,c++11,C++,C++11,在运行程序时,我注意到只有第一次迭代的值被重复了5次。 为什么会这样?让我们考虑下面两行< /P> fin>>get(name,30); fin>>marks; 在标记为字符的情况下。 由于使用>>操作员从cin输入需要用户按Enter键,因此Enter键('\n')的代码也将在输入缓冲区中 如果您没有从输入缓冲区中删除此'\n',则在循环的下一次迭代中cin.get(name,30)会将此单个字符读取到名称 这是标记是字符的例子 如果输入不正确,例如用户输入 c
为什么会这样?
让我们考虑下面两行< /P>
fin>>get(name,30);
fin>>marks;
在标记
为字符
的情况下。
由于使用>>操作员从cin
输入需要用户按Enter键,因此Enter键('\n'
)的代码也将在输入缓冲区中
如果您没有从输入缓冲区中删除此'\n'
,则在循环的下一次迭代中cin.get(name,30)
会将此单个字符读取到名称
这是标记
是字符
的例子
如果输入不正确,例如用户输入
cin >> marks;
cin.get(ch);
作为标记(且标记
变量为浮动
类型)4
将被带到标记
,而将带到下一个学生的姓名
因此,在输入后清理输入缓冲区的更好方法如下:
cin>>标志;
做{
cin.get(ch);
}而(ch!='\n');
cin >> marks;
cin.get(ch);
4vv6s5