读文件时,怎么判断文件是否结尾
1个回答
展开全部
while(!cin.eof())并没有错吧,我的机器上能通过,只不过这个程序会无限循环。while(cin>>a>>b)这句和上面那句是一样的结果。while(cin>>n)表示的是判断cin类中的三个状态位,只要其中的三个状态位之一,被设置就反回true。下面是C++中具体的关于cin的错误检测机制,希望对你有帮助使用cin进行输入:cin是类istream的对象。对于cin输入,它将跳过空白(空格,换行符和制表符)直到遇到非空白字符,cin将读取从非空白字符到与目标类型不匹配的第一个字符之间的全部内容。比如有cina;其中a是int型变量,如果这时输入一个字符d,则会出现设置流状态failbit位,这可以通过调用good()函数来测试,这时对后面的输入将会关闭,也就是说如果cin>>a;后面还有一句cin>>b;则语句cin>>b将不会执行。d、如果希望程序在流状态位被设置后能够读取后面的输入,则必须将流状态重置为良好。这可以使用clear()方法来实现。比如cin>>a;cin.clear();cin>>b;其中变量a是整型。这时如果输入一个字符d语句cin>>a将使程序设置failbit位,语句cin.clear()将状态位failbit位清除,接着执行语句cin>>b,这时会发现程序cin>>b;没有提示输入,这是为什么呢?原因就在于虽然使用clear()函数重置了流状态,但是不匹配的输入仍然留在输入队列中,下一次输入就将从这里读起,而不会提示用户输入内容,而是从输入流中直接提取,也就是说字符d会直接赋给变量b;如果变量b是字符型的话则接收他,并把字符d赋给b,这里不会提示输入变量b的值,这不是我们所预期的。如果变量b是整型变量的话,则cin>>b又将是错误的。怎样能在第一次输入错误后让系统提示用户为以后的输入语句输入内容呢?方法就是使用一个函数来一直读取输入流中的字符直到达到空白为止,这可以使用isspace()函数和ignore()函数来实现,下面将具体介绍。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询