【问题标题】:String literals to PTCHAR is deprecated不推荐使用 PTCHAR 的字符串文字
【发布时间】:2020-09-30 19:28:38
【问题描述】:

我正在处理旧代码,其中将字符串文字分配给在标题中定义的PTCHAR(指向字符的指针)类型的变量:typedef WCHAR TCHAR, *PTCHAR;

PTCHAR str;
str = _tcsrchr(dir, '\\');
*(str++)=0;

str = TEXT("This is stackoverflow");

我收到一条警告“不推荐将字符串文字转换为指向字符的指针(非常量)”, 我知道警告即将到来,因为 const 被分配给一个非常量指针变量,但我无法制作 str CONST(LPCSTR) 因为它在代码中被修改为*(str++)=0;

有没有办法解决这个问题?

【问题讨论】:

标签: c++ unicode lpcstr


【解决方案1】:

如果您想稍后修改字符串,您需要复制它,例如使用_wcsdup()。完成后别忘了free()

【讨论】:

  • @Yunnosch 为什么你认为字符串没有被修改? *(str++)=0; 是字符串修改。
  • @Codo 你是对的。我过度关注str++ 没有改变它。对不起。 (顺便说一句;很好的风格问“为什么”而不是说“错”,虽然我是。)
猜你喜欢
  • 2014-04-21
  • 2018-11-03
  • 1970-01-01
  • 2012-03-27
  • 2012-11-21
  • 2018-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多