我有一个问题,BSTR如何接受一个号码 这里的第二行给出了错误
unsigned int number =10;
BSTR mybstr=SysAllocString(number);
此行也会出错
VarBstrCat(mybstr, number, &mybstr);
谢谢:)非常感谢您的帮助:)
答案 0 :(得分:2)
首先,SysAllocString
accepts const OLECHAR*
, not int
其次,VarBstrCat
's second parameter is BSTR
, not again int
要将int
转换为BSTR
,您可以这样做:
std::wstring s = std::to_wstring(number); // needs C++11
BSTR mybstr = SysAllocString(s.c_str());
更新:或者更高效,正如Remy Lebeau在评论中所建议的那样:
BSTR mybstr = SysAllocStringLen(s.c_str(), s.length());
UPDATE2:如果你的编译器不支持C ++ 11,你可以使用C函数swprintf()
:
wchar_t buf[20];
int len = swprintf(buf, 20, L"%d", number);
BSTR mybstr = SysAllocStringLen(buf, len);
答案 1 :(得分:0)
您需要先将数字转换为unicode字符串,然后才能获得它的BSTR。
为此,您可以使用_itow
将int
转换为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);