关于CString和const char*的转换,该如何处理
关于CString和const char*的转换
CString fullPath(_T("xxx"))
首先是使用了
const char* filename =fullPath.GetBuffer(sizeof(fullPath));
提示错误error C2440: “初始化”: 无法从“wchar_t *”转换为“const char *”
然后尝试了
char szStr[256] = {0};
wcstombs(szStr, fullPath, fullPath.GetLength());
出现26个错误,大概是默认库冲突一类的,没有解决方法
请问怎么能把CString转换const char*,unicode,VS2010
------解决方案--------------------
试试 _bstr_t
Header: comutil.h
Lib: comsuppw.lib or comsuppwd.lib
CString fullPath(_T("xxx"))
首先是使用了
const char* filename =fullPath.GetBuffer(sizeof(fullPath));
提示错误error C2440: “初始化”: 无法从“wchar_t *”转换为“const char *”
然后尝试了
char szStr[256] = {0};
wcstombs(szStr, fullPath, fullPath.GetLength());
出现26个错误,大概是默认库冲突一类的,没有解决方法
请问怎么能把CString转换const char*,unicode,VS2010
------解决方案--------------------
试试 _bstr_t
Header: comutil.h
Lib: comsuppw.lib or comsuppwd.lib
- C/C++ code
#include <iostream> #include <string> #include "comutil.h" #pragma comment(lib, "comsuppw.lib") using namespace std; int main() { // 窄字符输入,宽字符输出 _bstr_t strTmp = "hello"; wcout << (wchar_t*) strTmp << endl; // 宽字符输入,窄字符输出 strTmp = L"hello"; // 或者 strTmp = (LPCTSTR)fullPath; cout << (char*)strTmp << endl; system("pause"); return 0; }
------解决方案--------------------
USES_CONVERSION;
T2A 或者W2A