转换CString为const char *

在我的Unicode MFC应用程序中如何从CString转换为const char*

6 Solutions collect form web for “转换CString为const char *”

要将TCHAR CString转换为ASCII,请使用CT2Amacros – 这也将允许您将string转换为UTF8(或任何其他Windows代码页):

 // Convert using the local code page CString str(_T("Hello, world!")); CT2A ascii(str); TRACE(_T("ASCII: %S\n"), ascii.m_psz); // Convert to UTF8 CString str(_T("Some Unicode goodness")); CT2A ascii(str, CP_UTF8); TRACE(_T("UTF8: %S\n"), ascii.m_psz); // Convert to Thai code page CString str(_T("Some Thai text")); CT2A ascii(str, 874); TRACE(_T("Thai: %S\n"), ascii.m_psz); 

还有一个macros可以从ASCII – > Unicode( CA2T )进行转换,只要你有VS2003或更高版本,你就可以在ATL / WTL应用程序中使用它们。

有关更多信息,请参阅MSDN 。

如果您的CString是Unicode,则需要转换为多字节字符。 幸运的是有一个CString版本可以自动完成。

 CString unicodestr = _T("Testing"); CStringA charstr(unicodestr); DoMyStuff((const char *) charstr); 

注意:此答案早于Unicode要求; 看到评论。

只是施展而已:

 CString s; const TCHAR* x = (LPCTSTR) s; 

它的工作原理是因为CString有一个转换操作符来完成这个操作。

使用TCHAR使您的代码与Unicode无关; 如果你不关心Unicode,你可以简单地使用char而不是TCHAR

在CString到LPCTSTR上有明确的转换,所以你可以这样做(提供unicode没有指定):

 CString str; // .... const char* cstr = (LPCTSTR)str; 

我有一个类似的问题。 我有一个char*缓冲区的.so名称。
我无法将char*variables转换为LPCTSTR 。 这是我如何解决它…

 char *fNam; ... LPCSTR nam = fNam; dll = LoadLibraryA(nam); 

我build议你从ConvUnicode.h使用TtoC

 const CString word= "hello"; const char* myFile = TtoC(path.GetString()); 

这是每个Unicode进行转换的macros

  • MSI安装后运行exe文件?
  • 何时使用Visual Studio其他依赖关系?
  • Visual Studio 2015更新1垃圾邮件本地主机
  • Visual Studio 2010的全局源代码控制应该包含哪些内容?
  • IIS Express在停止Web应用程序后立即closures正在运行的站点
  • 如何在.less文件上打开Visual Studio 2010 .css Intellisense
  • 在Visual Studio中打开项目失败,因为nuget.targets未find错误
  • 如何在Visual Studio中find堆栈跟踪?
  • 如何编写在Intellisense中显示的C ++注释?
  • 什么是“服务包含”在csproj文件中?
  • 什么是obj文件夹生成?