我知道这对专家来说可能是一个愚蠢的问题,但我只是想知道是否可以在调用时将CString类型的变量传递给下面声明的函数?
void LoadFile(char * szFileName);
发生以下错误:' LoadFile' :无法从'类CString'转换参数1到' char *' ...
我能以某种方式转换字符串吗?
谢谢您的评论......
答案 0 :(得分:2)
实际上,你必须这样做:
CString filename("somefile.txt");
LoadFile((LPSTR)(LPCSTR) filename); // need the extra cast to (LPSTR)
或
LoadFile((LPSTR) filename.GetString());
这是假设您不是为Unicode构建的。如果您正在构建Unicode,那么它将会有所不同。
如果您正在构建Unicode,我会将函数签名更改为:
void LoadFile(LPCTSTR szFileName); // LPCTSTR == const TCHAR* (TCHAR is char for MBCS and wchar_t for Unicode)
答案 1 :(得分:1)
您的编译器正在告诉您究竟出了什么问题。您正在传递自定义对象CString
,而您正在调用的函数正在使用c样式的字符串(带有空终止符的char *)。
您需要访问CString
类正在包装的c样式字符串。您可以在MSDN文档页面here找到有关此内容的更多信息。
简单地将您的论点转换为LPCSTR
。
CString file("somefile.txt");
LoadFile((LPCSTR)file);
答案 2 :(得分:0)
使用GetBuffer
成员函数,它返回LPSTR ...
https://msdn.microsoft.com/en-us/library/aa315043%28v=vs.60%29.aspx