我有一個_bstr_t
變量bstrErr
,我有一個CString
變量csError
。如何設置bstrErr
到csError
的值?如何將_bstr_t轉換爲CString
9
A
回答
16
是沒可能只投它:
_bstr_t b("Steve");
CString cs;
cs = (LPCTSTR) b;
我認爲,當該項目是Unicode這應該工作。
3
如果您編譯爲Unicode - 只需將封裝的BSTR分配給CString。如果您爲ANSI編譯,則必須使用WideCharToMultiByte()進行轉換。
另外要注意,被封裝的BSTR可以是null,它對應於一個空字符串。如果你不處理這個問題,你的程序將會遇到未定義的行爲。
6
CString有LPCSTR和LPCWSTR的構造器和賦值操作符,因此永遠不需要調用WideCharToMultiByte,並且無法在unicode或非unicode模式下投射錯誤。
您可以用這種方式只分配字符串:
csError = bstrErr.GetBSTR();
或使用構造函數 CString csError(bstrErr.GetBSTR());
我正在使用GetBSTR。這與使用(LPCWSTR)投射bstrErr是一樣的,但我更喜歡它的可讀性。
0
BSTR myBSTRVal;
CString BSTRasCString("")
char szValue[MAX_PATH] = "";
// This will map the BSTR to a new character string (szValue)
WideCharToMultiByte(CP_ACP, 0, myBSTRVal, -1, szValue, sizeof(szValue), NULL,
NULL);
BSTRasCString.Format("%s", szValue);
BSTRasCString.TrimLeft();
BSTRasCString.TrimRight();
+1
我可以回答應該不僅僅包括代碼的。你改變/做了什麼?你爲什麼這樣做? - 來自評論 – 2017-08-15 16:00:30
相關問題
- 1. 如何將cstring轉換爲NSString和NSString爲cstring?
- 2. 如何將CString轉換爲CByteArray?
- 3. 如何將nsstring轉換爲cString?
- 4. vC++ - 如何將CString轉換爲LPCWSTR
- 5. 如何將CString轉換爲ofstream?
- 6. 如何將cstring轉換爲NSString?
- 7. 如何將CString轉換爲UCHAR數組?
- 8. 如何將CString轉換爲CTime在c + +?
- 9. 將Wstring轉換爲CString
- 10. 將COleVariant轉換爲CString
- 11. 將CString轉換爲std :: wstring
- 12. C++轉換_bstr_t爲int和int轉換成_bstr_t
- 13. 它作爲參數傳遞時如何將_bstr_t轉換爲BSTR?
- 14. 如何CString的轉換爲字節
- 15. 如何轉換CString的LPSTR
- 16. 無法將CString轉換爲BYTE數組
- 17. 我無法將cstring轉換爲int
- 18. 在C++中將長轉換爲CString
- 19. C++ LibCurl - 將CURLcode轉換爲CString
- 20. 將UTF-8 char *轉換爲CString
- 21. 將CString轉換爲字符數組?
- 22. 從CString轉換爲char */TCHAR *
- 23. 問題:如何將CString轉換爲C++ MFC中的const char *
- 24. 如何將BYTE數組轉換爲MFC中的CString?
- 25. 如何將CString轉換爲C++中的double?
- 26. 如何將CString轉換爲常量字符*
- 27. 如何轉換ULONGLONG到CString的
- 28. 轉換CString爲無符號長
- 29. 轉換CString的到的CTime
- 30. 將cstring轉換爲python字符串對象
感謝Neeul 其工作 – subbu 2009-11-06 06:43:22