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 2024-04-12 11:34  新西兰程序员  阅读(913)  评论(0编辑  收藏  举报