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 的转换的主要内容,如果未能解决你的问题,请参考以下文章