将CString转换为LPCWSTR指针时的static_cast vs GetBuffer(0)

时间:2017-06-08 04:40:46

标签: c++ casting

有两种方法可以将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
}

1 个答案:

答案 0 :(得分:0)

两种形式之间没有本质区别。 运行时,GetBuffer()方法应返回一些内部缓冲区,而static_cast应调用convert操作符,如下所示。

operator char* () {return _internalBuffer;}

个人喜好是你喜欢使用的。