不存在从 "CString" 到 "LPCWSTR" 的适当转换函数,该如何处理
不存在从 "CString" 到 "LPCWSTR" 的适当转换函数
VC++,MFC,OpenCV
CString filename = fileDlg.GetPathName();
USES_CONVERSION;
LPWSTR pwStr=new wchar_t[filename.GetLength()+1];
wcscpy(pwStr,T2W((LPCTSTR)filename));
int len = WideCharToMultiByte(CP_ACP,0,filename,-1,NULL,0,NULL,NULL);//filename下波浪
char * cvfile = new char[len];
WideCharToMultiByte(CP_ACP,0,filename,-1,cvfile,len,NULL,NULL);//filename下波浪
CFile file;
file.Open(filename,CFile::modeRead|CFile::typeBinary);
file.SeekToBegin();
提示的错误是:

新手不知道哪里出了问题……望大神指教!谢谢!
------解决方案--------------------
CString有一个GetBuffer()的成员函数返回其内部的字符指针
------解决方案--------------------
string.GetBuffer()
------解决方案--------------------
使用 CString::GetBuffer() 即可
------解决方案--------------------
因为你的编译环境是多字符集.
CString实际上是CStringA, 即内部是ASCII的.
wcscpy(pwStr,T2W((LPCTSTR)filename)); 这里你都作了转换, 为什么不用呢??
后面的参数应该是使用pwStr, 而不是filename.
------解决方案--------------------
wcscpy(pwStr,T2W((LPCSTR)filename));
LPCTSTR->LPCSTR
VC++,MFC,OpenCV
CString filename = fileDlg.GetPathName();
USES_CONVERSION;
LPWSTR pwStr=new wchar_t[filename.GetLength()+1];
wcscpy(pwStr,T2W((LPCTSTR)filename));
int len = WideCharToMultiByte(CP_ACP,0,filename,-1,NULL,0,NULL,NULL);//filename下波浪
char * cvfile = new char[len];
WideCharToMultiByte(CP_ACP,0,filename,-1,cvfile,len,NULL,NULL);//filename下波浪
CFile file;
file.Open(filename,CFile::modeRead|CFile::typeBinary);
file.SeekToBegin();
提示的错误是:
新手不知道哪里出了问题……望大神指教!谢谢!
------解决方案--------------------
CString有一个GetBuffer()的成员函数返回其内部的字符指针
------解决方案--------------------
string.GetBuffer()
------解决方案--------------------
使用 CString::GetBuffer() 即可
------解决方案--------------------
因为你的编译环境是多字符集.
CString实际上是CStringA, 即内部是ASCII的.
wcscpy(pwStr,T2W((LPCTSTR)filename)); 这里你都作了转换, 为什么不用呢??
后面的参数应该是使用pwStr, 而不是filename.
------解决方案--------------------
wcscpy(pwStr,T2W((LPCSTR)filename));
LPCTSTR->LPCSTR