while ( input >> s ) input是类ifstream的一个实例,这种写法对吗?求解析。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了while ( input >> s ) input是类ifstream的一个实例,这种写法对吗?求解析。相关的知识,希望对你有一定的参考价值。
#include<iostream>
#include <string>
#include <vector>
#include <fstream>
#include <process.h>
using namespace std;
int main(void)
ifstream input;
vector<string>::const_iterator it = files.begin();
while ( it != files.end())
input.open( it->c_str() );
if ( !input )
cerr << " error: can not open input file:" << *it << endl;
input.clear();
++it; // 获取下一个文件
else
while ( input >> s )
process(s); //程序员自己定义的一个函数,并不一定是系统的函数,你可以使用编译器找一下这个函数的原型,看看是做什么用的。
input.close();
input.clear();
++it;
return 0;
但是io对象要求能转换为bool类型,对处于正常状态的io对象转成true,对处于错误状态的io对象转成false. 处于错误状态的io对象拒绝执行io操作,可用.clear()清除错误状态。
因此是可以这么做的。 参考技术A 写法不对,input>>s的返回值并不是表示输入是否成功的值,而是input的引用。这和cin是一样的。
例如cin>>a,返回cin的引用,所以可以继续用(cin>>a)>>b的写法,相当于cin>>a>>b,用起来很方便。但这样并不能判断是否输入成功。
用input.eof()来检查是否文件结束。本回答被提问者和网友采纳
请问高手,这个while(cin>>s)啥时候结束????
#include<iostream>
using namespace std;
int main()
char s;
while(cin>>s);
cout<<"over!"<<endl;
return 0;
我试过了,ctrl+D不行!请问还有其他的解释了没有?
当没有读到文件尾时 cin>>s 返回1,继续循环。
但读到文件尾时 cin>>s 返回0,结束循环。 参考技术A ctrl+D
~~~~~~~~~~~~~~~
忘了Windows下面是ctrl + Z
这个ctrl + D 或者是 ctrl + Z 是发送一个EOF,表示输入结束,这时候就会跳出while循环。 参考技术B 这个是不会停的
cin等的是键盘的输入值 当你输入了它才会去输入到内存 执行下一次等待撒 参考技术C linux: Ctrl + d
windows: Ctrl + z
以上是关于while ( input >> s ) input是类ifstream的一个实例,这种写法对吗?求解析。的主要内容,如果未能解决你的问题,请参考以下文章