我想在MFC应用程序中使用listbox.Addstring();
,这将需要LPCTSTR
。
我传递的变量为char
数组,其长度为33个字符。
ListBox.AddString(Adapter_List->pScanList->network[0].szSsid);
SzSsid
被声明为char szSsid[33];
我面临两个问题:
1)如果我将LPCTSTR
类型转换为
ListBox.AddString( (LPCTSTR ) Adapter_List->pScanList->network[0].szSsid );
我没有得到正确的输出 - 有一些中文字符显示。我知道这是一些unicode问题,但我不了解unicode。
2)如果我不进行类型转换,我会收到错误
无法将char [33]转换为LPCTSTR
我正在尝试构建一个显示所有接入点的MFC应用程序。在szSsid
中,我可以看到接入点名称。
答案 0 :(得分:4)
LPCTSTR
类型转换是错误的。您可能希望使用CA2T
char
将TCHAR
字符串转换为LPCTSTR
(CA2W
)字符串,或char
转换为wchar_t
{1}字符串到Unicode UTF-16 // CA2T - Uses the TCHAR model (obsolete)
ListBox.AddString( CA2T(Adapter_List->pScanList->network[0].szSsid) );
字符串;例如:
// CA2W - Conversion to Unicode UTF-16 (wchar_t) string
// More modern approach.
ListBox.AddString( CA2W(Adapter_List->pScanList->network[0].szSsid) );
或:
char szSSid[]
但更重要的是,CP_UTF8
字符串使用的编码是什么?您可能希望将编码标识符(例如,对于UTF-8字符串AddString()
)指定为ATL conversion helper,以便正确转换为传递给{{1}}方法的Unicode UTF-16字符串。