c++中,调用read()函数后,手动发送文件结束标志ctrl+z后就不能再次输入了吗?

#include<iostream>#include<fstream>usingnamespacestd;intmain(){charch1[33]={0},ch2[33... #include <iostream>
#include <fstream>
using namespace std;

int main()
{
char ch1[33]={0}, ch2[33]={0};
cout<<"输入字符:";
cin.read(ch1, 33);/*这里输入的时候只有把数组填满后,下一个输入才会进行。或者这样:cin.read(ch1,5);输入正好5个字符后,下面的输入还可以继续。
否则在数组不填满的情况下,手动发送文件结束标志ctrl+z,下面的程序就不可以再次有输入了,怎么会这样呢?*/
cout<<ch1;
cout<<"继续输入字符:";
cin.ignore(222, '\n');
cin.get(ch2, 33);
cout<<ch2<<endl;

return 0;
}
我的意思是上面的read函数已经结束,为什么下面代码中执行输入不执行?这2个根本就不相关啊?
怎么就不能再次输入了呢?
展开
 我来答
so__so__so__
推荐于2016-02-27 · 超过32用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:79.4万
展开全部
ctrl+z是表示结束符,C字符串是已\0表示结束的,这里的ctrl+Z就是\0得意思,表示读到尾部了。C++流是有状态的,就是iostate,流如果达到文件结束位置,则eofbit跟failbit都会被置位,如果用if(cin)这个是false,所以下面的流操作都是非法的,你可以通过cin.clear(),清理标志位来是流可以继续被使用。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式