将BSTR转换为int

时间:2008-10-03 17:36:37

标签: c++ winapi

有没有人知道如何在VC ++ 2008中将BSTR转换为int

提前致谢。

8 个答案:

答案 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)

你应该像其他人指出的那样使用VarI4FromStrBSTR不是wchar_t*,因为他们NULL semanticsSysStringLen(NULL)没有问题,但wcslen(NULL)不是),但{/ 1}}不同。