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无法识别该编码的路径。
解决方案

  • 解决方案窗口右键工程名->属性->配置属性->常规->项目默认值->字符集->选择“多字节”。

你可能感兴趣的:(C++学习,c++,bug,开发语言)