关于vs2013(2012)里面fopen的问题

编译环境win8.1proVS2013变量定义如下CStringm_FileName;在这里引用CreateDirectory("E:\\lixuefang\\Calib... 编译环境
win 8.1 pro VS2013
变量定义如下
CString m_FileName;
在这里引用
CreateDirectory("E:\\lixuefang\\Calibration\\Results\\"+m_FileName,NULL);
SetCurrentDirectory("E:\\lixuefang\\Calibration\\Results\\"+m_FileName);
fout=fopen(m_FileName+".xls","a+"); // vs提示有错误的行
提示错误
f:\lee-projects\newscan\newscandlg.cpp(497): error C2664: “FILE *fopen(const char *,const char *)”: 无法将参数 1 从“ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t>>>”转换为“const char *”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符

很多地方有问题 都是把字符串加 _T()解决的,但是上面这种问题该怎么解决?求教
多谢
展开
 我来答
百度网友c0a13db
2013-11-18 · 超过21用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:42万
展开全部
工程属性-常规-字符集 改成使用多字节字符集。
或者这个地方改成
string m_FileName;
CreateDirectory("E:\\lixuefang\\Calibration\\Results\\"+m_FileName,NULL);
m_FileName+=".xls" ;
fout=fopen(FileName.c_str(),"a+");
追问
如果使用多字节字符集,会出现这个错误:error MSB8031: Building an MFC project for a non-Unicode character set is deprecated. You must change the project property to Unicode or download an additional library.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3038d88
2013-11-18 · TA获得超过1097个赞
知道小有建树答主
回答量:1670
采纳率:0%
帮助的人:1166万
展开全部
fopen 要的参数是 const char *

你的m_FileName 是 CString 啊.

CString path_temp = m_FileName + ".xls";

fout=fopen( path_temp.GetButtfer() , "a+" );

path_temp.ReleaseBuffer();//用完记得 释放
追问
按照你说的做 出现错误:error C2664: “FILE *fopen(const char *,const char *)”: 无法将参数 1 从“wchar_t *”转换为“const char *”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
追答
CString path_temp = m_FileName + ".xls";

fout=fopen( (LPSTR)(LPCTSTR)path_temp , "a+" );

那么试试这样,如果还不行。。

那么你应该用其他函数 代替 fopen。

_wfopen 就是非常恰当的。

以下是2个 函数的原型。
FILE *fopen(
const char *filename,
const char *mode
);
FILE *_wfopen(
const wchar_t *filename,
const wchar_t *mode
);

可以看出, fopen 参数是 char, _wfopen 参数是 wchar_t ;

以上问题是 取决于你工程使用的编码.,
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式