【问题标题】:CString to LPCTSTR conversionCString 到 LPCTSTR 的转换
【发布时间】: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 函数

标签: c++ type-conversion cstring


【解决方案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

【讨论】:

    猜你喜欢
    • 2015-07-09
    • 2014-01-17
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2017-11-10
    相关资源
    最近更新 更多