今天安装了vs2005,打开以前的项目,发现所有用到ifstream fin打开的文件,其路径都不能包含中文,否则fin总是为NULL,请问各位有没有遇到过? 该怎么解决那? 难道又换成2003?

解决方案 »

  1.   

    代码如下:
    #include "stdafx.h"#include <iostream>
    #include <fstream>
    #include <string>using namespace std;int main()
    {
    ifstream fin;
    string str = "F:\\jxk\\程序\\Test\\000";
    fin.open(str.c_str(),ios::binary|ios::in);
    if(!fin)
    cout<<"File open failed!"<<endl;
    else
    cout<<"File open succeed!"<<endl; fin.close();
    return 1;
    }
    运行结果为打开文件失败!
    如果将string str = "F:\\jxk\\程序\\Test\\000";改成string str = "F:\\jxk\\Test\\000";
    则能够打开文件!
    改变字符集为unicode或者多字节,不影响结果,即包含中文路径就打不开。我曾经尝试string str = _T("F:\\jxk\\程序\\Test\\000");,但在unicode字符集时无法编译通过,但为多字节字符时可以编译通过!但还是不影响结果!早知道这么多问题, 就将就那个2003用了,但是那个2003的资源视图,真是bug多多——
      

  2.   

    Microsoft Visual Studio 2005
    版本 8.0.50727.42 (RTM.050727-4200)
      

  3.   

    TEXT("F:\\jxk\\程序\\Test\\000");,
      

  4.   

    用TEXT宏好象确实可以,但TEXT("")似乎只能用于常量吧?
    TEXT(str)貌似不可以呐?
    而且TEXT()好象是windows特有的哦,需要include <windows.h>的。有没有不依赖于平台,而又可以对变量作转换的函数或者方法?
      

  5.   

    用MultiByteToWideChar()已搞定——谢谢各位