不存在从 "CString" 到 "LPCWSTR" 的适当转换函数

乖灬小狐 2014-07-13 04:27:18
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();

提示的错误是:


新手不知道哪里出了问题……望大神指教!谢谢!
...全文
2047 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
乖灬小狐 2014-07-14
  • 打赏
  • 举报
回复
不太懂GetBuffer()是怎么使用的……不过#6,#7的方法试了,成功编译过了! 感谢以上所有回答的朋友!
边走边瞧 2014-07-14
  • 打赏
  • 举报
回复
楼上都是正确答案,LZ结贴吧。
  • 打赏
  • 举报
回复
工程用了unicode字符集。设置成多字节字符集,就好了。
zhuyf87 2014-07-14
  • 打赏
  • 举报
回复
提示已经说的很清楚了,用CString::GetBuffer()可以得到CString内部维护的字符串指针。
mujiok2003 2014-07-14
  • 打赏
  • 举报
回复
引用 6 楼 xiaohuh421 的回复:
因为你的编译环境是多字符集. CString实际上是CStringA, 即内部是ASCII的. wcscpy(pwStr,T2W((LPCTSTR)filename)); 这里你都作了转换, 为什么不用呢?? 后面的参数应该是使用pwStr, 而不是filename.
正解。 T2W
sdghchj 2014-07-14
  • 打赏
  • 举报
回复
wcscpy(pwStr,T2W((LPCSTR)filename)); LPCTSTR->LPCSTR
xiaohuh421 2014-07-14
  • 打赏
  • 举报
回复
因为你的编译环境是多字符集. CString实际上是CStringA, 即内部是ASCII的. wcscpy(pwStr,T2W((LPCTSTR)filename)); 这里你都作了转换, 为什么不用呢?? 后面的参数应该是使用pwStr, 而不是filename.
caewow 2014-07-14
  • 打赏
  • 举报
回复
使用 CString::GetBuffer() 即可
  • 打赏
  • 举报
回复
string.GetBuffer()
  • 打赏
  • 举报
回复
http://blog.163.com/h_sc2011/blog/static/204543014201221905954582/ CString与LPCWSTR、LPSTR、char*、LPWSTR等类型的转换 (UNICODE版本字符串转换为Ansi版本)
「已注销」 2014-07-13
  • 打赏
  • 举报
回复
CString有一个GetBuffer()的成员函数返回其内部的字符指针
bug_________ 2014-07-13
  • 打赏
  • 举报
回复
类型不匹配..
wince上各种类型转换特别是字符串是很头疼的,这个类是项目用的, 每个都测试好用,使用静态方法,直接引用后,写【::cv::就可以用】 typedef int u32; //转换类,所有的转换函数在这里静态 2是to的意思 //cs:cstring //s:string //i:int class cv { public: static char * s2charx(string s); //static char * cs2charx_unicode(CString s); static char * cs2charx_unicode(CString s); static CString charx2cs(char *s); cv(); virtual ~cv(); static int cstring_to_int(CString t); static CString s2cs(string text); static CString i2cs(int i); static string cs2s(CString s); static void Utf8ToUnicode(wchar_t* pstrOut, u32 dwOutLen, const char* pstrIn, u32 dwInLen); static void Gb2312ToUnicode(wchar_t* pstrOut, u32 dwOutLen, const char* pstrIn, u32 dwInLen); static CString string_to_cstring(string text); static int string_to_int(string str); static string cstring_to_string(CString text); static void Gb2312ToUtf8(char* pstrOut, u32 dwOutLen, const char* pstrIn, u32 dwInLen); static BOOL IsNumeric(string text); static void UnicodeToGb2312(char* pstrOut, u32 dwOutLen, const wchar_t* pstrIn, u32 dwInLen); static void Utf8ToGb2312(char* pstrOut, u32 dwOutLen, const char* pstrIn, u32 dwInLen); static int cs2i(CString s); static string int_to_string(int n); static CString ChineseCapitalMoney(double Num); //static wstring s2ws( string s ); static std::wstring s2ws(const string& s); static std::string WChar2Ansi(LPCWSTR pwszSrc); static string ws2s(wstring& inputws); static const char * s2constcharx(string s); static std::wstring Ansi2WChar(LPCSTR pszSrc, int nLen); static char * cs2charx_ansi(CString s); //static string ws2s(wstring ws); };

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧