Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用c+进行文件读写+;_C++_C++11 - Fatal编程技术网

C++ 用c+进行文件读写+;

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

在运行程序时,我注意到只有第一次迭代的值被重复了5次。
为什么会这样?

让我们考虑下面两行< /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