您的位置:首页 > 编程语言 > C语言/C++

C++文件操作<1>

2012-09-15 12:19 162 查看
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
/*
strm::iostate  机器相关的整形名,由各个类定义,用来定义条件状态。 strm是ios,ifstream,ofstream
strm::badbit   strm::iostate类型的值,用于指出被破坏的流,标志着系统级的故障,如无法恢复的读写错误。如果出现。该流通常不能使用了。
strm::failbit  同上,用于指出失败的流,可以修正的
strm::eofbit   同上,用于指出指出流已经到达文件结束符
eof()          如果流设置了eofbit值,则返回true
fail()         如果流设置了failbit值,则返回ture
bad()          如果设置了badbit值,则返回ture
good()         如果流的状态为有效,则返回true
clear()        将流的状态设为有效状态
clear(flag)    将流s中的某个状态设为有效。flag的类型为strm::iostate
setstate(flag) 将流添加指定条件。
rdstate()      返回流的当前状态
eofbit是在遇到文件结束符时设置的,此时同时还设置了failbit();
*/
int main()
{
ifstream fin("b.txt");
if(!fin)cout<<"can't read from b.txt"<<endl;
//流在进行无错误状态,才能用于输入或输出。检测流是否可用的最简单方法是检查其真值。
string s;
fin>>s;
cout<<s<<endl;
cout<<cin<<endl;//0x804a068
if(cin)
cout<<1<<endl;
cin.setstate(ios::badbit);
cout<<cin<<endl;  //0
cin.clear();
cin.setstate(ios::failbit);
cout<<cin<<endl; //0
cin.clear();
cin.setstate(ios::eofbit|ios::failbit);
cout<<cin<<endl; //0x804a068
if(cin.fail())cout<<"fail"<<endl;
if(cin.eof()) cout<<"eof"<<endl;
/*如果你单单设置了ios::eofbit,fail是不会显示出来的。*/
cin.clear();
int i;
while(cin>>i)
{
cout<<i<<endl;
}
if(cin.fail())cout<<"read error"<<endl;
if(cin.eof())cout<<"read eof"<<endl;
/*当我键入一个h字符时,输出结果是read error*/
/*
当我键入ctrl+d时,输出:read error
read eof
*/
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: