Chinaunix首页 | 论坛 | 博客
  • 博客访问: 577649
  • 博文数量: 158
  • 博客积分: 4380
  • 博客等级: 上校
  • 技术积分: 2356
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-21 10:45
文章分类

全部博文(158)

文章存档

2012年(158)

我的朋友

分类: C/C++

2012-11-16 10:29:15

判断fstream是否可以继续操作应当使用bool operator!() const而不是is_open,因为is_open只表示是否已经打开,而不论其是否正确。

#pragma warning( disable: 4786 )
#include
#include
#include
using namespace std;

int main( void )
{
    ostream_iterator oite( cout );

    ifstream file( "D:\\test.txt" );
    cout << "文件是否打开:" << boolalpha << bool(file.is_open()) << ' ';
    cout << "文件是否正确:" << boolalpha << !!file << endl;
    {
        file.seekg( 0L, ios::beg );
        istream_iterator fitor( file );
        istream_iterator fend;
        copy( fitor, fend, oite );
        cout << endl;
    }
    cout << "文件是否打开:" << boolalpha << bool(file.is_open()) << ' ';
    cout << "文件是否正确:" << boolalpha << !!file << endl;
    {
        file.seekg( 0L, ios::beg );
        istream_iterator fitor( file );
        istream_iterator fend;
        copy( fitor, fend, oite );
        cout << endl;
    }
    return 0;
}

输出是:
文件是否打开:true 文件是否正确:true
……文件内容……
文件是否打开:true 文件是否正确:false
……本来应该打印文件内容,但因为file不正确了,所以只输出空行……
Press any key to continue
阅读(1009) | 评论(3) | 转发(0) |
0

上一篇:普通话 与 粤语

下一篇:我曾犯过的错误01

给主人留下些什么吧!~~

网友评论2012-11-16 10:31:03

周星星
自然不同的呀,被成功打开,未必就正确,可以进行读取。比如文件打开了,但文件数据已经被读取完。

网友评论2012-11-16 10:30:41

w
为什么会得到不同的结果呢?

网友评论2012-11-16 10:30:23

周星星
to jarjar:谢谢您的指正!