lpctstr用法解析, 常见问题和解决方案看这里!

吉云

今天搞代码,遇到一个类型:LPCTSTR,有点懵,不知道是啥玩意,就去查查,结果发现这东西还挺有意思,就记录一下。

遇到问题

我在写一个函数的时候,需要传入一个字符串参数,我就直接用 const char,结果编译的时候报错,提示说不能把“LPCTSTR”转成“const char ”,这我就纳闷,这是啥情况?

lpctstr用法解析, 常见问题和解决方案看这里!

然后我就去搜一下,发现原来是字符集的问题。我用的开发环境是 VS2008,它默认的字符集是 Unicode,而我那个函数需要的字符集是多字节字符集。

解决过程

知道问题所在,解决起来就简单。我找到两种解决方法:

  • 方法一:直接改项目的字符集设置。在项目属性里面,找到“配置属性”,再找到“常规”选项卡,里面有个“字符集”,把它改成“使用多字节字符集”就完事。
  • 方法二:在字符串前面加个“L”。比如,原来是这样调用的:FUN(str),现在改成这样:FUN(L"str")
  • lpctstr用法解析, 常见问题和解决方案看这里!

这两种方法都能解决问题。但是我发现第一种方法更方便,不用改代码,只要改一下项目设置就好。不过第二种方法在某些情况下可能更灵活,它可以针对单个字符串进行转换。

我还看到有人提到一个宏:_TEXT。说是用这个宏,就不用管字符集是啥,它会自动帮你处理。我觉得这个宏挺厉害的,以后可以研究一下。

总结

今天遇到的这个 LPCTSTR 类型,就是一个指向常量字符串的指针。只不过它会根据字符集的不同,指向不同的字符串类型。如果字符集是 Unicode,它就指向宽字符字符串(wchar_t);如果字符集是多字节,它就指向普通字符串(char)。

以后再遇到类似的问题,就知道该怎么解决,也算是学到一个小知识点,不亏!。

lpctstr用法解析, 常见问题和解决方案看这里!

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]