LPCTSTR和char*的转换

本文探讨了LPCTSTR和char*之间的转换问题,并通过一个具体案例解释了为什么直接赋值会导致显示乱码,以及如何解决该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

  LPCTSTR和char* 之间的转换,这个问题经常出现。

  LPCTSTR是const char*,每次我都是在两者之间进行强转。

  但是今天强转出现了问题。

 

  char* buffer = new char[10];

  sprintf(buffer, "%02d:%02d", min, sec);

  LPCTSTR text = (const char*)buffer;

  showText(text);

 

  这样show出来的text的内容一直都是乱码,但是调试的时候看到text里面的内容

  和buffer里面的内容是一样的,导致很久都找不出原因。

  后来想想,只有在LPCTSTR text = buffer这句赋值上出了问题。

  然后改用了

  memcpy(text, buffer, sizeof(buffer));

  来代替直接赋值,接下来显示就正常了。

  但是还是没有明白直接赋值到底哪里出问题了。

 

  网上搜寻了一下有这么一段

  char* str1="Test String";
  LPCTSTR str2=(LPCTSTR)(LPTSTR)str1;

  

  明天上班再去试一下是否正确有效。

  

  

 

转载于:https://www.cnblogs.com/loktar/p/3489740.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值