首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >常量char*到LPTSTR

常量char*到LPTSTR
EN

Stack Overflow用户
提问于 2009-09-11 20:58:08
回答 3查看 9.7K关注 0票数 5

我正在尝试调用一个接受LPTSTR作为参数的函数。我使用字符串来调用它,就像foo(“bar”)中一样;

我得到一个错误,我“无法将参数1从'const char 3‘转换为'LPTSTR'",但我不知道为什么或如何修复它。任何帮助都是最好的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-11 20:59:53

您可能已经定义了UNICODE,并且LPTSTR扩展为wchar_t*。对字符串使用文本宏,以避免出现问题,例如foo(TEXT("bar"))

票数 8
EN

Stack Overflow用户

发布于 2009-09-11 21:00:36

LPTSTR是指向TCHAR的非常数指针。反过来,TCHAR在ANSI构建中被定义为char,在Unicode构建中被定义为wchar_t (定义了UNICODE和/或_UNICODE符号)。

因此,LPTSTR等同于:

代码语言:javascript
复制
  TCHAR foo[] = _T("bar");

因为它不是const,所以不能安全地使用文字调用它--文字可以分配在只读内存段中,而LPTSTR是被调用者可能改变字符串内容的信号,例如

代码语言:javascript
复制
  void truncate(LPTSTR s)
  {
     if (_tcslen(s) > 4)
        s[3] = _T('\0');
  }

当使用Visual C++ 2008编译时,如果你传入一个文字,就会崩溃。

票数 2
EN

Stack Overflow用户

发布于 2009-09-11 21:33:06

代码语言:javascript
复制
foo(const_cast<LPTSTR>("bar"));

当foo试图改变传递给它的数据时,就会像上面解释的那样崩溃。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1413239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档