2
A
回答
9
您可以pass a BSTR safely任何功能期待wchar_t *
。所以你可以使用_wtoi()。
6
谷歌建议VarI4FromStr
:
HRESULT VarI4FromStr(
_In_ LPCOLESTR strIn,
_In_ LCID lcid,
_In_ ULONG dwFlags,
_Out_ LONG *plOut
);
0
BSTR s = SysAllocString(L"42");
int i = _wtoi(s);
3
尝试_wtoi功能:
int i = _wtoi(mybstr);
2
您应该使用:: VarI4FromStr(...)。
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的<>
它将为可通过流传递和类型安全的任何类型的工作!
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
}
0
您应该像其他人一样使用VarI4FromStr。 BSTR
不是wchar_t*
,因为它们的差异在NULL semantics(SysStringLen(NULL)
没问题,但wcslen(NULL)
不是)。
相关问题
- 1. 如何将int转换为BSTR
- 2. 将BSTR转换为char *
- 3. 将ATL :: CComBSTR转换为BSTR *
- 4. 将BSTR转换为wstring
- 5. 将BSTR转换为CHAR *和CHAR *为C中的BSTR
- 6. 使用win32将LPSTR转换为BSTR
- 7. 转换BSTR为const char *
- 8. 将[Int?]转换为[Int]
- 9. 将int转换为int []
- 10. 将IO Int转换为Int
- 11. 将列var上的varchar转换为int列转换为int
- 12. 将int转换为char
- 13. java将int转换为short
- 14. 将char *转换为int
- 15. 将hexa转换为int
- 16. OCaml:将bool转换为/ int
- 17. 将int转换为双Python
- 18. 将TextField值转换为Int
- 19. 将字节[]转换为int
- 20. 将dateTime转换为int
- 21. 将BIGINT UNSIGNED转换为INT
- 22. 将PyInt转换为C Int
- 23. 将int转换为CGFloat
- 24. Javascript:将Math.sqrt转换为int?
- 25. 将ASCII转换为int
- 26. 将char *转换为int
- 27. 将“Double”转换为Int
- 28. 将int转换为char
- 29. 将INT转换为DATETIME(SQL)
- 30. 将int32转换为int
你不能,NULL是一个有效的BSTR值。 – Constantin 2008-10-03 22:26:27