String类型转LPCTSTR -----理解C++中的字符串类型转换

在看代码时,发现有时候会把string类型转换为LPCTSTR, 刚开始不理解为什么要做这个转换,所以做了一些调查,现在记录如下

是这样的,STRING是代表C++中的字符串string, 而LPCTSTR代表的是Windows系统中的字符串类型。 也就是说,这样转换的目的是为了把C++中的字符串string转换为Windows系统中的字符串类型LPCTSTR

我们知道,LPCTSTR是一种指针类型,它指向的是一个 const TCHAR数组,其中TCHAR数组中的字符可以是字符(char), 也可以是宽字符(wchar_t). => 所以 string 转LPCTSTR的目的就是为了使C++程序可以和Windows API进行交互, 因为Windows API只接受LPCTSTR作为字符串参数

 这是最常见的情况,就是和Windows API交互时,因为Windows API只接受LPCTSTR作为字符串参数, 所以在调用Windows API之前,必须先将C++字符串转换为LPCTSTR

另外一种情况就是 在C++中需要使用宽字符串,来支持多语言环境(有的语言需要宽字符串来存储),这种时候也可以把string转换为LPCTSTR(支持宽字符串)

 

方法:

使用string转LPCTSTR的方法有2个,一个是c_str()函数,另一个是使用_tcscpy()函数

LPCTSTR str = testString.c_str();

TCHAR buffer[256];

  _tcscpy(buffer, testString.c_str());

  LPCTSTR str = buffer;

 

posted on   新西兰程序员  阅读(1046)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2018-04-12 NPM run start使用本地的http-server
2018-04-12 Umbraco Examine 实现Fuzzy search
2018-04-12 Umbraco Examine Search (Lucene.net) french accent
2017-04-12 C# 移除string[] 数组中的指定元素
2016-04-12 转载 ASP.NET MVC中使用ASP.NET Identity
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示