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轉換爲wstring
- 3. 將ATL :: CComBSTR轉換爲BSTR *
- 4. 將BSTR轉換爲char *
- 5. 將BSTR轉換爲CHAR *和CHAR *爲C中的BSTR
- 6. 如何將Bstr轉換爲Platform :: String?
- 7. 將BSTR轉換爲char的問題*
- 8. 使用win32將LPSTR轉換爲BSTR
- 9. BSTR轉換爲CString的CString
- 10. 轉換BSTR爲const char *
- 11. 將[Int?]轉換爲[Int]
- 12. 將int轉換爲int []
- 13. 將IO Int轉換爲Int
- 14. 轉換BSTR到LPCWSTR
- 15. 將int轉換爲可爲空的int?
- 16. 將列var上的varchar轉換爲int列轉換爲int
- 17. 將字符串轉換爲int,int轉換爲字符串
- 18. 將int轉換爲double
- 19. 將int轉換爲char
- 20. 將char轉換爲int?
- 21. 將ascii轉換爲int?
- 22. iOS:將id轉換爲int
- 23. 將DateTime.Today轉換爲int c#
- 24. 將Int轉換爲Collection.IndexDistance
- 25. Javascript:將Math.sqrt轉換爲int?
- 26. 將NVARCHAR轉換爲INT
- 27. 將ascii substr轉換爲int
- 28. 將bool轉換爲int?
- 29. 將小端轉換爲int
- 30. 將int轉換爲float?
你不能,NULL是一個有效的BSTR值。 – Constantin 2008-10-03 22:26:27