哪种类型的字符串最适合用于Win32和DirectX

What type of string is best to use for Win32 and DirectX?

本文关键字:用于 Win32 DirectX 种类 类型 字符串      更新时间:2023-10-16

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

有人能推荐各种字符串中哪种是最好使用的吗?理想情况下,它将是一种类型的字符串,可以很好地转换为其他类型(主要是LPCWSTR和LPCSTR)。到目前为止,我一直在使用std::string和std::wstring,并使用.c_str()函数将其转换为正确的格式。

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

c_str()一起使用std::wstring。我认为没有理由在Windows上使用std::string,您的代码也可以始终使用本机UTF-16编码。

我也会坚持使用std::wstring。如果你真的需要在某个地方通过std::string,你仍然可以在飞行中转换它:

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

它也起着相反的作用。

如果您使用的是Native COM(#import <type_library>的东西),那么_bstr_t。它原生地对LPCWSTR和LPCSTR进行类型转换,并且与COM的内存分配模型非常吻合。无需.c_str()调用。