2

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

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

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

4

3 回答 3

6

完全按照您的做法使用std::wstringwith 。c_str()我认为没有理由std::string在 Windows 上使用,您的代码也可以始终使用本机 UTF-16 编码。

于 2012-01-24T19:05:56.927 回答
3

我也会坚持std::wstring。如果你真的需要通过std::string某个地方,你仍然可以即时转换它:

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

它也可以反过来工作。

于 2012-01-24T19:26:37.340 回答
0

如果您使用的是 Native COM(的东西#import <type_library>),那么_bstr_t. 它本机类型转换为 LPCWSTR 和 LPCSTR,并且与 COM 的内存分配模型很好地结合在一起。无需.c_str()打电话。

于 2012-01-24T19:13:55.520 回答