社区
C++ 语言
帖子详情
关于流的输入状态的疑问
hbwin2006
2006-07-04 01:14:09
void main()
{
char s[100];
ifstream in("d:\\a.txt"); //这个文件只有一行,而且小于100个字符
in.getline(s,100);
if (in.eof()) cout<<"结束状态1";
if (!in) cout<<"结束状态2"
}
运行结果是"结束状态1".
可是 !in 和 in.eof()的返回值不是一样的吗,怎么这里是不同的,想不明白.
...全文
119
8
打赏
收藏
关于流的输入状态的疑问
void main() { char s[100]; ifstream in("d:\\a.txt"); //这个文件只有一行,而且小于100个字符 in.getline(s,100); if (in.eof()) cout<<"结束状态1"; if (!in) cout<<"结束状态2" } 运行结果是"结束状态1". 可是 !in 和 in.eof()的返回值不是一样的吗,怎么这里是不同的,想不明白.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mmosquito
2006-07-05
打赏
举报
回复
in.eof()指流是否结束
in 指流的状态是否error,
!in != in.eof
文件结束状态还是good,此时如果还继续读,则状态就error
qiqi162002
2006-07-05
打赏
举报
回复
前者是判断是否结束文件了,,后者是判断文件读状态如何.
rollor_phoe
2006-07-04
打赏
举报
回复
会返回false但不是in返回false。
tidyduck
2006-07-04
打赏
举报
回复
可是 !in 和 in.eof()的返回值不是一样的吗,怎么这里是不同的,想不明白
---------------------------------------------------------------------------]
楼主,你搞错了,if(in.eof())的意思是文件到结束的话返回true。
而if(in)是ifstream in("d:\\a.txt"); 这一句执行成功的话,也就是文件成功打开的话就返回true。而楼主你的文件已打开成功了,所以if(in)会一直返回true。
而楼主用的if(!in)就会一直返回false了,它后面的语句当然就不能执行了。
------------------------------------------------------------------------------------]
这个也不太对吧?ifstream对象在读取结束的时候好像也是会返回false的
rollor_phoe
2006-07-04
打赏
举报
回复
可是 !in 和 in.eof()的返回值不是一样的吗,怎么这里是不同的,想不明白
---------------------------------------------------------------------------]
楼主,你搞错了,if(in.eof())的意思是文件到结束的话返回true。
而if(in)是ifstream in("d:\\a.txt"); 这一句执行成功的话,也就是文件成功打开的话就返回true。而楼主你的文件已打开成功了,所以if(in)会一直返回true。
而楼主用的if(!in)就会一直返回false了,它后面的语句当然就不能执行了。
gold123d
2006-07-04
打赏
举报
回复
ifstream in("d:\\a.txt");这一行是不是要这样的ifstream in("d:\\a.txt",ios::in|ios::out);??
rollor_phoe
2006-07-04
打赏
举报
回复
ifstream in("d:\\a.txt");这一行是不是要这样的ifstream in("d:\\a.txt",ios::in|ios::out);??
----------------------------------------------------------------------------
不这样写也是可以的,它有默认参数,可以不写。
in.getline(s,100);这句话改成这样试试getline(in,s);
du51
2006-07-04
打赏
举报
回复
in==in.fail()
rdstate
{
good,eof,fail,bad
}
C++
输入
输出
流
第二弹:文件
输入
输出
流
and字符串
输入
输出
流
目前使用最广泛的是磁盘文件。因为
输入
流
运算符会默认以空格符作为分隔符,字符串123 456中含有一个空格符,那么传输时会将空格前的123传给num,空格后的456传给num2,因为num和num2是int型数据,所以编译器会以int型数据来理解缓冲区释出的内容,将num和num2赋值为123和456。根据不同的情况,对文件的读写操作,可以采用不同的文件打开模式。通过参考文档中对ifstream的构造函数的描述,文件
输入
流
对象的有参构造需要
输入
文件名,可以指定打开模式(不指定则使用in模式,为读打开)
深入理解C++
输入
输出
流
为什么引入
输入
输出
流
?因为C++兼容C,所以C中的
输入
输出函数依然可以在C++中使用,但是很显然如果直接把C的那套
输入
输出搬到C++中肯定无法满足C++的需求,第一点也是最重要的一点那就是C中的
输入
输出有类型要求,只支持基本类型,很显然这是没办法满足C++的需求的,因此C++设计了易于使用的并且多种
输入
输出
流
接口统一的IO类库。并且还支持多种格式化操作。还可以自定义格式化操作。C++中总体来说有三种
java管道
流
的使用
疑问
Write end dead?
在做一个web日志浏览小工具时候 使用到了java的管道
流
. 但是使用过程中却一直报了 Write end dead 的异常. 我的需求是这样的: 创建好的管道
流
, 输出
流
放入 日志的appender 里面,这样log4j 记录日志时候会自动写入, 然后我再人为跑一个线程不断去读取管道的
输入
流
, 每当有websocket连接进来时候就将其session放入一个集合, 自定义的线程遍历s...
ffmpeg4.2.2打开
输入
文件/网络
流
是怎么获取
流
信息的
文章没啥干货,就只是自己一个
疑问
的记录。 在工作中解决一个bug,继而引发关于
流
信息是怎么获取的,是在avformat_open_input()函数中已经获取了?还是要去avformat_find_stream_info()函数中获取? 先看nb_streams值是在哪变化的,看变量声明得知是avformat_new_stream()中修改的 /** * Number of elements in AVFormatContext.streams. * * Set b
cin标准
输入
流
错误清理
cin.sync()函数 这个是用来清空cin缓冲区里面未读取的信息... 例子: #include using namespace std; int main () { char first, second; cout << "Please, enter a word: "; first=cin.get(); cin.sync();
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章