我正在现代化一个庞大的、传统的MFC代码库,其中包含各种字符串类型:
- CString
- std::string
- std::wstring
- char*
- wchar_t*
- _bstr_t
我想在内部标准化一种字符串类型,并仅在第三方API(即COM或MFC函数)绝对需要时将其转换为其他类型。我的同事和我正在讨论的问题是:我们应该使用哪种字符串类型作为标准?
我更喜欢使用C++标准字符串之一:std::string或std::wstring。我个人倾向于使用std::string,因为我们不需要宽字符——这是一个没有面向客户的UI的内部代码库(即不需要多语言支持)。"普通"字符串允许我们使用简单的、未装饰的字符串字面值("Hello world" vs L"Hello world" 或 _T("Hello world"))。
编程社区有没有官方立场?面对多种字符串类型,通常使用什么作为标准的“内部”存储格式?
std::wstring
和std::vector<wchar_t>
都是很合适的选择。 - Richard Crittenstd::wstring
。如果使用窄字符串,则需要在各处进行转换。请注意:既然您不知道这一点,您不是做这项工作的好选择,这是基础知识。选择您为翻译人员的责任在于您的经理。 - Cheers and hth. - Alf_T("Hello world")
,自从引入 Unicode 层以来,T
宏已经在 2000 年被淘汰,而今天我们的工具无法为这些宏所针对的 Windows 版本(9x)生成可执行文件。我知道这是一个遗留代码库。但当你的任务是清理它时,提到T
宏是不合适和非常低效的。 - Cheers and hth. - Alf