gpt4 book ai didi

c++ - 无法将 char[33] 转换为 LPCTSTR,或者如果我将类型转换为 LPCTSTR,则无法获得所需的结果

转载 作者:太空狗 更新时间:2023-10-29 21:03:06 30 4
gpt4 key购买 nike

我正在尝试在 MFC 应用程序中使用 listbox.Addstring();,它将采用 LPCTSTR。我正在传递一个长度为 33 个字符的 char 数组变量。

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) 如果我不进行类型转换,我会得到一个错误

Cannot convert char[33] to LPCTSTR

我正在尝试构建一个将显示所有访问点的 MFC 应用程序。在 szSsid 中,我可以看到接入点名称。

最佳答案

LPCTSTR 类型转换是错误的。您可能想使用 ATL conversion helperCA2Tchar 字符串转换为 TCHAR (LPCTSTR) 字符串,或 CA2Wchar 字符串转换为 Unicode UTF-16 wchar_t 字符串;例如:

// 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[] 字符串使用的编码 是什么?您可能希望将该编码标识符(例如,UTF-8 字符串的 CP_UTF8)指定为 CA2W constructor nCodePage parameter正确转换为传递给 AddString() 方法的 Unicode UTF-16 字符串。

关于c++ - 无法将 char[33] 转换为 LPCTSTR,或者如果我将类型转换为 LPCTSTR,则无法获得所需的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14068892/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com