C++BUG记录:文件无法创建,文件路径正确但使用了Format

问题1:xx.Format()不存在与参数列表匹配的重载函数

问题:文件的路径名字是通过Format转换组合而成的,会报错“FileName.Format()不存在与参数列表匹配的重载函数”。

FileName.Format("%s%d", FilePath, num);//报错:FileName.Format()不存在与参数列表匹配的重载函数

原因:VS默认使用的是“unicode”编码。
解决方案

  • 为Format格式中加入“T_”或者“L”。
FileName.Format(L"%s%d", FilePath, num);
FileName.Format(_T("%s%d"), FilePath, num);
  • 解决方案窗口右键工程名->属性->配置属性->常规->项目默认值->字符集->选择“多字节”。

问题2:Format格式中加入“T_”或者“L”组成的地址,fopen_s无法为其创建文件

问题:问题1中使用Format格式中加入“T_”或者“L”来解决地址转换组合问题,地址路径正确但fopen_s也无法创建文件。

FileName.Format(L"%s%d", FilePath, num);
FileName = FileName + (CString)(".txt");
fopen_s(&file, (const char*)(FileName.GetBuffer()), "wb");//无法创建,返回值是NULL

原因:fopen_s无法识别该编码的路径。
解决方案

  • 解决方案窗口右键工程名->属性->配置属性->常规->项目默认值->字符集->选择“多字节”。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值