最近工作中,需要用到文件操作的模块,因为涉及到特殊的格式要求,所以,自己写了一个类封装读写解析格式的过程,底层操作文件对象本来是用的是 fstream类来操作,不过在使用中却遇到了不少的问题。
首先是vs2005下的中文路径名称问题,我发现只要传入中文路径,打开文件的操作一定会失败,在跟踪调试后发现,fstream类真实打开文件使用的是需要支持宽字节的函数,为了将多字节转换为宽字节,在其内部调用了多字节转宽字节的函数,所以如果在调用含中文路径的文件前,如果你没有设置中文环境,那么转换必然会乱码,随之而来的就是打开文件失败。
不知道vs的后续版本有没有改正这个问题,但是如果大家使用vs2005的fstream类打开文件时,记得设置语言环境。
第二个遇到的问题,是写入值的问题,我需要将一个确定是将一个int值占用四个字节的方式写入到文件中,但是,也许是我才疏学浅,居然没有找到将int值直接写入到fstream流的方法,如果直接按照 <<流的方式,在第二次用>>读取的时候,会出现多读取,或者少读取的问题, 因为进度问题,没有深究此问题,果断用CFile替换掉了fstream…… 暂时猜想的方法是,先将int转换成char * 然后写入char*。这样就可以控制读取(写入)字节数了。