gpt4 book ai didi

c++ - 无法使用 _stprintf 读取俄语字符串

转载 作者:行者123 更新时间:2023-11-30 03:06:14 25 4
gpt4 key购买 nike

我有以下代码将检索到的火线板名称分配给TCHAR 变量。

TCHAR* firewireName = new TCHAR[wcslen(variantProperty.bstrVal)+1];
_stprintf(firewireName, _T("%S"), variantProperty.bstrVal);
VariantClear(&variantProperty);

但是当火线名称是俄语时 LSI 1394 OHCI совместимый хост-контроллерfirewireName 变量仅包含 LSI 1394 OHCI

我是C++小白,代码有什么问题吗?

最佳答案

是的。很多。简而言之。

首先,BSTR 不是 printf 函数族所期望的。 BSTR 以其长度为前缀,printf 将期望 NULL 终止符。这也将您对 wcslen 的使用标记为错误。

其次,您没有使用任何适当的内存管理。

您需要使用 SysStringLen获取长度,然后将结果存储在保证释放自身的 C++ 缓冲区中。 ATL 提供了一个 CComBSTR应该可以解决问题的类。

关于c++ - 无法使用 _stprintf 读取俄语字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6828741/

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