CString 到 LPCTSTR 的转换

Posted

技术标签:

【中文标题】CString 到 LPCTSTR 的转换【英文标题】:CString to LPCTSTR conversion 【发布时间】:2012-09-27 11:56:26 【问题描述】:

我有一个需要转换为 LPCTSTR(const char*) 的 CString 变量。我需要这种转换,以便我可以将它用作函数中的参数。

CString 看起来像:

CString sqlTemp = _T("INSERT INTO "+ sw1 +" (filename, "+ sw2 +") VALUE ("+ sw7 +","+ sw3 +" ) ");

它包含一个查询。函数原型为:

int WriteBlob(LPCTSTR szSqlStat, LPCTSTR szFilePath)

那么你能告诉我一个如何转换为 LPCTSTR 的例子吗? 这可能是微不足道的,但我是一个 C++ 初学者,我仍然掌握它。

谢谢。

【问题讨论】:

请试试这个 (LPCTSTR)(LPTSTR)sqlTemp 到 WriteBlog 函数 【参考方案1】:

一种转换方法是这样的:

CString str;

str = "Hello";

LPCSTR szTemp = (LPCSTR)(LPCTSTR)str;

【讨论】:

您能否解释一下为什么有这么多不同的格式(LPCTSTR、CString、char*、字符串等),它们都基本相同?还是有一些我看不到的区别? 下降字符串是一个对象,因此您可以在其上调用方法,这与其他所有方法不同。 char* 基本上是一个字符数组。 Cstring 也是一个字符数组,但它们可以占用 2 个字节,具体取决于编码。 LPCTSTR 是一个指向常量字符串的指针,所以你不能修改它。 " Cstring 也是一个字符数组" 不,不是。 @TamásSzelei 它确实指向 LPSTR / LPWSTR。【参考方案2】:
CString str; // the given string
CStringA strA(str); // a helper string
LPCSTR ptr = strA;

Reference MSDN

【讨论】:

以上是关于CString 到 LPCTSTR 的转换的主要内容,如果未能解决你的问题,请参考以下文章

CString 到 LPCTSTR 的转换

UTF-8 char * 到 CString 的转换

LPCTSTR和LPCSTR转换

int转LPCTSTR

我无法将 cstring 转换为 int

CString 到 TCHAR