如何将int转换为BSTR

How to Convert int to BSTR?

本文关键字:BSTR 转换 int      更新时间:2023-10-16

我有一个问题,BSTR如何接受数字这里的第二行给出错误

    unsigned int number =10;
    BSTR mybstr=SysAllocString(number);

这条线也给出了一个错误

VarBstrCat(mybstr, number, &mybstr);

谢谢:)非常感谢您的帮助:)

首先,SysAllocString接受const OLECHAR*,而不是int

其次,VarBstrCat的第二个参数是BSTR,而不是int

要将int转换为BSTR,可以这样做:

std::wstring s = std::to_wstring(number); // needs C++11
BSTR mybstr = SysAllocString(s.c_str());

更新:或者更高效,正如雷米·勒博在评论中所建议的那样:

BSTR mybstr = SysAllocStringLen(s.c_str(), s.length());

更新2:如果你的编译器不支持C++11,你可以使用C函数swprintf():

wchar_t buf[20];
int len = swprintf(buf, 20, L"%d", number);
BSTR mybstr = SysAllocStringLen(buf, len);

您需要将数字转换为unicode字符串,然后才能获得它的BSTR。为此,您可以使用_itowint转换为unicode字符串。

unsigned int number = 10;
wchar_t temp_str[11]; // we assume that the maximal string length can be 10
_itow(number, temp_str, 10);
BSTR mybstr = SysAllocString(temp_str);