我使用visual studio 2010 MFC來構建C++程序。我的程序調用一個不屬於項目的DLL,它接受一個char *。我有一個函數獲取LPCTSTR格式的字符串。我已經在谷歌大約兩個小時了,沒有找到解決辦法。如何將表單MFC LPCTSTR轉換爲char *。我發現的一切都不起作用,或者只是不編譯。C++ LPCTSTR to char *
回答
在MFC的最簡單的是通過CStringA
轉換(條件是得到的緩衝區將是一個只讀參數):
LPCTSTR pszA = ...
CStringA sB(pszA);
const char* pszC = sB;
char* pszD = const_cast<char*>(pszC);
其他選項是可用的和進行了討論:
- c++ convert from LPCTSTR to const char *
- How to convert from LPCTSTR to LPSTR?
WideCharToMultiByte
T2A
宏等
LPCTSTR
要麼定義爲const wchar_t *
或根據您的項目是否定義預處理器符號UNICODE
一個const char *
(或_UNICODE
,我忘了一個MFC使用)。
因此,解決您的問題取決於您是否使用UNICODE設置。
如果您使用它,則需要將字符串轉換爲窄字符串。使用CStringA
來執行此操作。
如果你不使用UNICODE,你需要創建一個可變的副本並將它傳遞給DLL,以防它想修改字符串。您可以使用CString
創建副本來完成此操作。
在這兩種情況下,一旦你有一個CString
對象的副本然後使用GetBuffer
方法得到一個可變的字符串指針,調用DLL函數,然後調用後調用ReleaseBuffer
。
如果可以避免的話,千萬不要使用CString。使用'std :: string'來製作副本。 – Puppy 2012-03-20 06:41:20
@DeMemG如果可以避免的話,不要使用MFC。而且你如何從'std :: string'獲得'char *'?在MFC世界中使用時,使用MFC類沒有任何問題。 – Praetorian 2012-03-20 06:43:51
- 1. CHAR到LPCTSTR
- 2. C++從LPCTSTR轉換爲const char *
- 3. Char to Operator C++
- 4. C++ ifstream to char *
- 5. 轉換爲const char *到LPCTSTR
- 6. vb.net byte [] to C++ char *
- 7. 轉換 '爲const char *' 到 'LPCTSTR' 的CreateDirectory
- 8. char * string to hex arrary in C
- 9. Casting void * to char * in C
- 10. Casting to unsigned char in C
- 11. 如何將char []轉換爲LPCTSTR?
- 12. 字符串串連的char *與LPCTSTR
- 13. 如何將unsigned char轉換爲visual C++中的LPCTSTR?
- 14. Python to C/C++ const char問題
- 15. Windows C++:LPCTSTR vs const TCHAR
- 16. Cast char to short
- 17. char to string error
- 18. reinterpret_cast double to char *
- 19. char [] to uint64_t
- 20. Const Char to LPTSTR
- 21. String.Replace char to string
- 22. CString to char *
- 23. KeyEventArgs.Key to char
- 24. const char * to LPTSTR
- 25. memcpy CString to char *
- 26. fstream to const char *
- 27. Cast void * to char *
- 28. GNU Guile SCM to char *
- 29. C++ CLI System.String ^到MFC LPCTSTR
- 30. Marshal StringBuilder to char * in C++/CLI(for IN/OUT)
您在項目中使用unicode嗎? – Torsten 2012-03-20 06:31:11