文件路径问题

本文介绍了在Visual Studio中调试程序时的当前工作路径特点,包括如何获取程序的绝对路径及解决使用fstream处理中文路径的问题。


1、VS调试时程序的当前路径是工程路径,不是debug或release目录;而直接运行时,当前路径是可执行文件路径。

相对路径,所谓相对位置都是相对自己的。即VS调试时,相对的是工程文件目录,直接运行时是可执行文件路径。


2、所以最好使用GetModuleFileName获取绝对路径,具体代码参考:

    char exeFullPath[MAX_PATH]; // MAX_PATH
    GetModuleFileName(NULL,exeFullPath,MAX_PATH);//得到程序模块名称,全路径,也就是当前运行程序的全路径。

    /*解析路径*/
    char drive[_MAX_DRIVE];
    char dir[_MAX_DIR];
    _splitpath(exeFullPath, drive, dir, NULL,NULL);
    CString strPath;
    strPath.Format("%s%s", drive, dir);

    CMarkup xml;
    string strCfgName = strPath + "AESEncryptAndDecryptWithCMS.xml";//strPath为当前运行程序所在目录


3、fstream不支持中文路径,解决办法:

    setlocale(LC_ALL,"Chinese-simplified");//设置中文环境 
    ifstream ofs(strCfgName.c_str());
    if(!ofs.is_open())
    {
        TEST_ERROR("读取失败");
        //return false;
    }
    setlocale(LC_ALL,"C");//还原
   



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值