我使用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++ ifstream to char *
- 3. vb.net byte [] to C++ char *
- 4. 字符串串連的char *與LPCTSTR
- 5. Casting to unsigned char in C
- 6. Casting void * to char * in C
- 7. char * string to hex arrary in C
- 8. Windows C++:LPCTSTR vs const TCHAR
- 9. Python to C/C++ const char問題
- 10. fstream to const char *
- 11. Cast void * to char *
- 12. String.Replace char to string
- 13. const char * to LPTSTR
- 14. CString to char *
- 15. KeyEventArgs.Key to char
- 16. Const Char to LPTSTR
- 17. C++ CLI System.String ^到MFC LPCTSTR
- 18. const char * to int cast?
- 19. C基本數據的數據類型的問題 - 爲const char *到LPCTSTR
- 20. 字符串到LPCTSTR
- 21. CharacterSet to String和Int to Char鑄造
- 22. 如何轉換C++ SaveFileDiolog信息,以LPCTSTR
- 23. 字符數組到LPCTSTR
- 24. Fast ByteBuffer to CharBuffer or char []
- 25. Arduino unsigned long int to char *
- 26. char to UTF code in vbscript
- 27. NSString * to Char [](GameCenter Send Struct)
- 28. C++ char const char *
- 29. 爲什麼MFC C++ CString(const char *)完全改變const char *值?
- 30. 元帥 「的char *」,在C#
您在項目中使用unicode嗎? – Torsten 2012-03-20 06:31:11