VS2005 FSTREAM 不能打开中文路径名文件的问题!
2013-01-05 10:15
609 查看
VS2005 FSTREAM 不能打开中文路径名文件的问题!
公司有一个项目从vs2003移植到vs2005之后老是出现runtim error经过排查最终定位在fstream 打开"含中文路径"的文件时候会出现fail的情况本来不相信vs2003过渡到2005会有这个问题,但是经过试验确证实了该问题我新建立一个exe来测试该问题#include "stdafx.h" #include "testiostream.h" #include <string> #include <fstream> BEGIN_MESSAGE_MAP(CtestiostreamApp, CWinApp) END_MESSAGE_MAP() CtestiostreamApp::CtestiostreamApp() { } CtestiostreamApp theApp; BOOL CtestiostreamApp::InitInstance() { CWinApp::InitInstance(); std::ifstream iput; iput.open("F:\\中文.txt"); ASSERT(!iput.fail()); return FALSE; }
vs2003不需要作任何设置就可以就可以成功但是vs2005下每次都会失败在断言处,查找了一些网上资料,例如http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=371229&SiteID=1发现但凡是uinicode的路径都是有该问题的.
解决方法有2个
1.第一个使用vs2005默认的unicode set并在所有字符串外面面加上_T() 或者_TEXT宏,代价是原来所有不符合unicode规范的地方你都必须得改.
2.使用not set 或者"mutibyte set" 并在程序初始化的时候调用setlocale()如下
BOOL CtestiostreamApp::InitInstance() { setlocale(LC_ALL,"Chinese-simplified"); CWinApp::InitInstance(); std::ifstream iput; iput.open("F:\\中文.txt"); ASSERT(!iput.fail()); return FALSE; }
就可以解决该问题
上述引用的ms论坛连接基本讲清楚了该问题,但是由于我前几日搜索中文相关信息时候,实在未发现有用之内容,故记录下来,希望有相同问题又不思其解的朋友可以少花点时间.http://www.cppblog.com/danoyang/archive/2006/05/23/7523.html
相关文章推荐
- 解决VS2005中fstream不能打开带有中文路径文件的问题
- 解决fstream不能打开带有中文路径文件的问题
- 解决fstream不能打开带有中文路径文件的问题
- VS2005中fstream不能读中文路径文件的bug
- 用fstream打开含中文路径文件时失败的问题。
- 让VS2005中的fstream支持中文路径文件打开
- 让VS2005,vs2008中的fstream支持中文路径文件打开
- 让VS2005中的fstream支持中文路径文件打开
- 让VS2005中的fstream支持中文路径文件打开 (转)
- 让VS2005中的fstream支持中文路径文件打开
- 让VS2005中的fstream支持中文路径文件打开
- 让VS2005中的fstream支持中文路径文件打开
- 让VS2005中的fstream支持中文路径文件打开
- [转载]VS2005中ifstream不能读中文路径文件的bug
- paip.解决中文url路径的问题图片文件不能显示
- [完]PHP文件下载 下载GET值中含有中文字符的文件,保存中文文件名,文件不能打开,遇到的编码问题
- 解决fstream.open()不能正确读取中文路径的问题
- 【转】利用ftpclient下载文件,解决用window.open打开ftp地址中有中文,不能下载的问题
- vs2005环境,fstream不支持中文路径的问题
- vs fstream 不能打开中文路径名文件