什么类型的字符串最适合Win32和DirectX?

时间:2012-01-24 19:02:41

标签: c++ string winapi directx-10

我正在使用DirectX 10和C ++开发一个小游戏,我发现各种不同类型的字符串是各种不同的directx / win32函数调用所必需的。

任何人都可以推荐哪种各样的字符串是最好用的,理想情况下它是一种类型的字符串,可以为其他类型提供良好的强制转换(主要是LPCWSTR和LPCSTR)。到目前为止,我一直在使用std :: string和std :: wstring,并使用.c_str()函数将其转换为正确的格式。

我想得到一种类型的字符串,我用它传递给所有函数,然后在函数内部进行强制转换。

3 个答案:

答案 0 :(得分:6)

std::wstringc_str()完全一样使用。我认为没有理由在Windows上使用std::string,您的代码也可能始终使用原生UTF-16编码。

答案 1 :(得分:3)

我也会坚持std::wstring。如果你真的需要在某处传递std::string,你仍然可以动态转换它:

std::string s = "Hello, World";
std::wstring ws(s.begin(), s.end());

它也是相反的。

答案 2 :(得分:0)

如果您使用的是Native COM(#import <type_library>的内容),那么_bstr_t。它原生地对LPCWSTR和LPCSTR进行类型转换,并与COM的内存分配模型很好地融合。无需.c_str()次来电。