ifstream note
2010-08-02 13:48
92 查看
-------------------------20100804-------------------------------------------
3 fstream对象未初始化时, 使用if()判断时, 返回true;
ifstream ff;
cout << int(bool(ff)); //将会输出1
4 close多次调用, 最终含义不一样: windows上打开的文件被关闭多次后, fstream对象将不能再次使用; cent os上可以
ifstream ff;
ff.open("2.txt");
ff.close();
ff.close();
ff.open("2.txt");
cout << int(ff.is_open() && ff.good());
最后一条语句在windows上将会输出0, 在cent os上将会输出1。
5 未初始化的fstream对象被认为是好的, 只不过一被读取就到达eof了;
读取一个不存在的文件后,fstream对象的状态就为false(bad)了
----------------------------------------------------------------------------------
1 读取status
ifstream f1("filename");
char buf[max];
while(f1.getline(buf, max))
{
//do something
}
假设文件有3行, while循环体执行几次? getline执行几次?
答: while循环体内执行3次, 但是getline成功执行4次。
因为, 当getline成功执行第3次后,文件的状态还是有效的; 再次执行getline时,buf被置空且f1的status被设置为eof.
最好使用此种标准的写法, 程序会更简洁不易错
2 当文件已经是eof时, seekg函数将不起任何作用, 此时tellg返回-1。 如果需要重设读写位置, 必需首先调用 f1.clear(),该函数将清除文件的状态
f1.clear();
f1.seekg(10, ios::beg|cur|end);
3 fstream对象未初始化时, 使用if()判断时, 返回true;
ifstream ff;
cout << int(bool(ff)); //将会输出1
4 close多次调用, 最终含义不一样: windows上打开的文件被关闭多次后, fstream对象将不能再次使用; cent os上可以
ifstream ff;
ff.open("2.txt");
ff.close();
ff.close();
ff.open("2.txt");
cout << int(ff.is_open() && ff.good());
最后一条语句在windows上将会输出0, 在cent os上将会输出1。
5 未初始化的fstream对象被认为是好的, 只不过一被读取就到达eof了;
读取一个不存在的文件后,fstream对象的状态就为false(bad)了
----------------------------------------------------------------------------------
1 读取status
ifstream f1("filename");
char buf[max];
while(f1.getline(buf, max))
{
//do something
}
假设文件有3行, while循环体执行几次? getline执行几次?
答: while循环体内执行3次, 但是getline成功执行4次。
因为, 当getline成功执行第3次后,文件的状态还是有效的; 再次执行getline时,buf被置空且f1的status被设置为eof.
最好使用此种标准的写法, 程序会更简洁不易错
2 当文件已经是eof时, seekg函数将不起任何作用, 此时tellg返回-1。 如果需要重设读写位置, 必需首先调用 f1.clear(),该函数将清除文件的状态
f1.clear();
f1.seekg(10, ios::beg|cur|end);
相关文章推荐
- XCode can't open file (ifstream/ofstream) in C++ (XCode C++无法读写文件)
- C++文件读写详解(ofstream,ifstream,fstream)还有简单使用
- C++文件操作详解(ifstream、ofstream、fstream)
- C++文件读写详解(ofstream,ifstream,fstream)
- ofstream和ifstream(详细)转
- C++文件操作(ifstream、ofstream)
- C++文件操作详解(ifstream、ofstream、fstream)
- ofstream 和ifstream的具体用法(转)
- ofstream&nbsp;和ifstream的具体…
- sstream,ifstream与ofstream
- C++文件读写详解(ofstream,ifstream,fstream)
- C++文件操作详解(ifstream、ofstream、fstream)
- 解析ifstream 与ofstream的用法
- ifstream ofstream 读写文件异常
- C++文件读写详解(ofstream,ifstream,fstream)
- ifstream 与ofstream用法
- error: no matching function for call to 'std::basic_ifstream<char>::open(std::string&)
- C++ ofstream和ifstream详细用法
- ifstream ostream istream ostream 不能声明
- ifstream 的使用方法介绍 一