C++中文件流操作的一些问题
2007-01-12 11:35
281 查看
*如果用open()方法打开一个文件,测试打开是否成功,一般要经过以下两个步骤:
(1)假设流文件对象为myfile,在open()前先调用myfile.clear()清除错误状态信息,有可能以前调用myfile中的方法出现错误,如果不清除,open()方法虽然调用成功,但它不会清除错误位(open()只有发生错误时才置错误位)导致后面的测试不正确;
(2)open()方法如果发生错误会置failbit,可以用fail()方法测试。写成代码就是:
...
myfile.clear();
myfile.open(lpszFileName,ios::binary);
if(myfile.fail())
{
//打开文件错误处理
...
}
...
(3)另外,调用open()方法后,也可以用is_open()来测试,但就像上面说的,如果在open()以前myfile流已经发生过错误,如有可能置过faibit,但没有clear()。尽管用is_open()测试可能通过,但后面在读写流的时候仍有可能发生错误!
*如果使用fstream来操作文件,要使用带中文的文件名或路径名会操作失败,可以用下面的方法的解决:
使用setlocale(LC_ALL,"Chinese-simplified");把条语句放在程序的最开始执行部分即可!
*如果要读取文件的修改时间,请注意时间的转换,否则提取的文件时间会有误:
所以在Windows下提取文件时间大致经历的步骤是:GetFileTime->FileTimeToSystemTime->SystemTimeToTzSpecificLocalTime
(1)假设流文件对象为myfile,在open()前先调用myfile.clear()清除错误状态信息,有可能以前调用myfile中的方法出现错误,如果不清除,open()方法虽然调用成功,但它不会清除错误位(open()只有发生错误时才置错误位)导致后面的测试不正确;
(2)open()方法如果发生错误会置failbit,可以用fail()方法测试。写成代码就是:
...
myfile.clear();
myfile.open(lpszFileName,ios::binary);
if(myfile.fail())
{
//打开文件错误处理
...
}
...
(3)另外,调用open()方法后,也可以用is_open()来测试,但就像上面说的,如果在open()以前myfile流已经发生过错误,如有可能置过faibit,但没有clear()。尽管用is_open()测试可能通过,但后面在读写流的时候仍有可能发生错误!
*如果使用fstream来操作文件,要使用带中文的文件名或路径名会操作失败,可以用下面的方法的解决:
使用setlocale(LC_ALL,"Chinese-simplified");把条语句放在程序的最开始执行部分即可!
*如果要读取文件的修改时间,请注意时间的转换,否则提取的文件时间会有误:
所以在Windows下提取文件时间大致经历的步骤是:GetFileTime->FileTimeToSystemTime->SystemTimeToTzSpecificLocalTime
相关文章推荐
- C++中关于文本内容的实用操作集合(新)(添加一些关于文件流的介绍)
- c++文档的一些操作
- java中对文件的一些操作(删除,复制,计算大小..)和一些数学问题代码详解
- chrome下,jquery对元素一些操作引起的问题
- java--myeclipse中一些操作问题
- 自己总结的一些C/C++语言基础问题
- 【cocos2d-x从c++到js】08:JS脚本语言的优势与一些问题 推荐
- 输入输出流>>和<<操作符对字符串操作的一些问题详解
- C++多重继承的一些问题
- 问题六十四:怎么用C++实现二叉查找树(binary search tree)及其相关操作
- C/C++日常学习总结(第十篇)string的实现&文件流操作
- c++ 导致内存泄露的一些小问题与解决方法
- 《Visual C++ 2010入门教程》系列三:关于C++的一些问题(转)
- C++100题中的一些问题
- git初始化操作以及一些问题的解决
- 实战c++中的string系列--string的替换、查找(一些与路径相关的操作)
- c++ mysql 一些小问题
- Linux常见的一些简单命令操作及简单小问题整理
- django models实际操作中遇到的一些问题
- 用C/C++解决一些数学问题(一)