您的位置:首页 > 其它

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: