有两种方法可以将CString
转换为LPCWSTR
指针。通常,我使用static_cast
方法。但最近我意识到GetBuffer()
可以与参数0
一起使用。所以我认为GetBuffer()
对于更干净的代码是有好处的,因为static_cast
虽然看起来更C++
,却有一个丑陋的语法。
每种方式的优点和缺点是什么,我应该在C ++中使用什么?
#include <atlstr.h>
int main() {
CString aCString = CString(_T("A string"));
_tprintf(_T("%s"), aCString.GetBuffer(0)); //methond -1
_tprintf(_T("%s"), static_cast<LPCWSTR>(aCString)); //methond -2
}
答案 0 :(得分:0)
两种形式之间没有本质区别。 运行时,GetBuffer()方法应返回一些内部缓冲区,而static_cast应调用convert操作符,如下所示。
operator char* () {return _internalBuffer;}
个人喜好是你喜欢使用的。