如何將Cstring轉換爲C++中的TCHAR *?如何將Cstring轉換爲C++中的TCHAR *?
回答
要從CString轉換爲TCHAR *只需使用GetBuffer函數(http://msdn.microsoft.com/en-us/library/aa314880%28v=vs.60%29.aspx)。
請注意,這可以讓您使用CStrings與Win32 API函數返回字符串作爲輸出參數,如下所示。
假設GetStr函數具有以下原型。
void GetStr(TCHAR *str, size_t s);
您可以使用CString作爲第一個參數調用GetStr,如下所示。
CString str;
GetStr(str.GetBuffer(1024), 1024);
str.ReleaseBuffer();
對GetBuffer的調用實際上會分配足夠的內存來存儲1024個字符。
請注意,調用ReleaseBuffer至關重要。否則會有內存泄漏。
在GetBuffer之後調用'ReleaseBuffer'是強制性的,但不是因爲你說的原因。不會有內存泄漏。但是'CString'對象可能處於不一致的狀態,並且結果可能不是很好定義。函數'ReleaseBuffer'沒有做它的名字所暗示的;它不會釋放任何緩衝區,而是修正CString對象的內部狀態(如字符串長度等)。 – IInspectable
@IInspectable這是正確的,但是(根據MSDN),如果您已經使用由GetBuffer返回的指針來更改字符串內容,則只需調用ReleaseBuffer即可。一般來說,我寧願遠離這種不確定性。 –
- 1. 從CString轉換爲char */TCHAR *
- 2. 如何將CString轉換爲CTime在c + +?
- 3. C++如何將wchar_t *轉換爲TCHAR [](不是TCHAR *)
- 4. 在C++中將長轉換爲CString
- 5. 如何將std :: wstring轉換爲TCHAR *
- 6. 如何將'System :: String ^'轉換爲'TCHAR'?
- 7. 如何將TCHAR轉換爲int
- 8. 如何將char *轉換爲TCHAR []?
- 9. 將SHORT轉換爲TCHAR?
- 10. 將CStdStringW轉換爲TCHAR *
- 11. BSTR轉換爲CString的CString
- 12. 問題:如何將CString轉換爲C++ MFC中的const char *
- 13. 如何將CString轉換爲C++中的字符?
- 14. 如何將CString轉換爲C++中的double?
- 15. C++ LibCurl - 將CURLcode轉換爲CString
- 16. C++將unicode CString或wchar_t轉換爲LPBYTE
- 17. 如何將cstring轉換爲NSString和NSString爲cstring?
- 18. 如何將一個void *轉換爲CString
- 19. 如何將CString轉換爲字節?
- 20. 如何將nsstring轉換爲cString?
- 21. 如何將CString轉換爲const char *?
- 22. 如何將CString轉換爲CByteArray?
- 23. vC++ - 如何將CString轉換爲LPCWSTR
- 24. 如何將LPARAM lParam轉換爲CString
- 25. 如何將CString轉換爲VT_ARRAY | VT_UI1
- 26. 如何將Int轉換爲CString?
- 27. MFC - 如何將WCHAR轉換爲CString?
- 28. 如何將CString轉換爲ofstream?
- 29. 如何將CString轉換爲UCHAR數組?
- 30. 如何將cstring轉換爲NSString?
轉換爲'TCHAR *'通常是不安全的。你確定你不想轉換爲'const TCHAR *'嗎? – IInspectable