有没有人知道如何在VC ++ 2008中将BSTR转换为int
提前致谢。
答案 0 :(得分:9)
您可以pass a BSTR safely任意期望wchar_t *
的任何功能。所以你可以使用_wtoi()。
答案 1 :(得分:6)
Google建议VarI4FromStr
:
HRESULT VarI4FromStr(
_In_ LPCOLESTR strIn,
_In_ LCID lcid,
_In_ ULONG dwFlags,
_Out_ LONG *plOut
);
答案 2 :(得分:3)
尝试_wtoi功能:
int i = _wtoi( mybstr );
答案 3 :(得分:2)
你应该使用:: VarI4FromStr(...)。
答案 4 :(得分:1)
您应该可以使用boost :: lexical_cast<>
#include <boost/lexical_cast.hpp>
#include <iostream>
int main()
{
wchar_t plop[] = L"123";
int value = boost::lexical_cast<int>(plop);
std::cout << value << std::endl;
}
很酷的是lexical_cast&lt;&gt;
它适用于任何可以通过流传递的类型及其类型安全!
答案 5 :(得分:1)
这是我用来解析字符串值的方法。它类似于Boost's lexical cast。
std::wistringstream iss(mybstr); // Should convert from bstr to wchar_t* for the constructor
iss >> myint; // Puts the converted string value in to myint
if(iss.bad() || iss.fail())
{
// conversion failed
}
答案 6 :(得分:0)
BSTR s = SysAllocString(L"42");
int i = _wtoi(s);
答案 7 :(得分:0)
你应该像其他人指出的那样使用VarI4FromStr。 BSTR
不是wchar_t*
,因为他们NULL semantics(SysStringLen(NULL)
没有问题,但wcslen(NULL)
不是),但{/ 1}}不同。