我正在使用DirectX 10和C ++开发一个小游戏,我发现各种不同类型的字符串是各种不同的directx / win32函数调用所必需的。
任何人都可以推荐哪种各样的字符串是最好用的,理想情况下它是一种类型的字符串,可以为其他类型提供良好的强制转换(主要是LPCWSTR和LPCSTR)。到目前为止,我一直在使用std :: string和std :: wstring,并使用.c_str()函数将其转换为正确的格式。
我想得到一种类型的字符串,我用它传递给所有函数,然后在函数内部进行强制转换。
答案 0 :(得分:6)
将std::wstring
与c_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()
次来电。