【发布时间】:2011-03-15 13:46:37
【问题描述】:
我正在修改广泛使用 TCHAR 的其他人的代码。在我的代码中只使用 std::wstring 是不是更好的形式? wstring 应该等同于 Widechar 平台上的 TString,所以我没有看到问题。理由是,使用原始 wstring 比支持 TCHAR 更容易......例如,使用 boost:wformat。
下一个维护者会更清楚哪种风格?我自己浪费了几个小时试图理解复杂的字符串,似乎只使用 wstring 会切断你需要理解的一半内容。
typedef std::basic_string<TCHAR> TString; //on winxp, TCHAR resolves to wchar_t
typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wstring;
...唯一的区别是分配器。
在不太可能的情况下,您的程序 登陆 Window 9x 机器,有 仍然是可以翻译的 API 层 将 UTF-16 字符串转换为 8 位字符。 使用 TCHAR 没有意义了 用于新代码开发。 source
【问题讨论】:
-
您到底关心什么?如果您有任何二进制不兼容,C++ 编译器和链接器都会通知您。如果这纯粹是一种风格问题,请将自己置于代码的下一个维护者的位置,并选择对她最有意义的类型名称。跨度>
标签: c++ windows winapi wchar-t tchar