新手刚接触mfc,用tinyxml在做。
------解决思路----------------------
xmltext是std::cstring的,不能直接转LPCSTR
还有,tinyxml貌似不支持unicode,你拿到的值都是ANSI编码的,不能赋值给wchar_t变量
LPCSTR strXML = xmltext.c_str();
------解决思路----------------------
你的工程是Unicode编码的,所以传入编辑框的字符串必须是Unidoe的wchar_t*
而tinyxml解析出来的要么是utf-8要么是ANSI要么是GB2312 GBK等。。。你先确定你的xml的内容是什么编码的,如果你用记事本
创建的xml,通常内容是多自己编码的,你试试这么转码:
wchar_t* GB2312ToUnicode(const char* szGBString)
{
UINT nCodePage = 936; //GB2312
int nLength=MultiByteToWideChar(nCodePage,0,szGBString,-1,NULL,0);
wchar_t* pBuffer = new wchar_t[nLength+1];
MultiByteToWideChar(nCodePage,0,szGBString,-1,pBuffer,nLength);
pBuffer[nLength]=0;
return pBuffer;
}
把strXml传入,把GB2312ToUnicode返回的指针传入SetDlgItemText(nID, lpszString)的lpszString
------解决思路----------------------
char* CNodeSystemApp::CStringWToAnsi(CStringW& str)
{
LPCWSTR pWcs = (LPCWSTR)str;
int strlen = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)pWcs, -1, NULL, 0, NULL, NULL);
char* strAnsi = new char[strlen + 1];
memset(strAnsi, 0, strlen + 1);
WideCharToMultiByte (CP_ACP, 0, (LPWSTR)pWcs, -1, strAnsi, strlen, NULL, NULL);
return strAnsi;
}