关于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()解决的,但是上面这种问题该怎么解决?求教
多谢 展开
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()解决的,但是上面这种问题该怎么解决?求教
多谢 展开
2个回答
展开全部
工程属性-常规-字符集 改成使用多字节字符集。
或者这个地方改成
string m_FileName;
CreateDirectory("E:\\lixuefang\\Calibration\\Results\\"+m_FileName,NULL);
m_FileName+=".xls" ;
fout=fopen(FileName.c_str(),"a+");
或者这个地方改成
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.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fopen 要的参数是 const char *
你的m_FileName 是 CString 啊.
CString path_temp = m_FileName + ".xls";
fout=fopen( path_temp.GetButtfer() , "a+" );
path_temp.ReleaseBuffer();//用完记得 释放
你的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 ;
以上问题是 取决于你工程使用的编码.,
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询