c++ - 协助在 MFC 中从多字节移植到 UNICODE

标签 c++ unicode mfc multibyte

我还有 6 个月到一年的乏味时间。我正在开发一个包含 100 万多行代码的程序(其中大部分是在 90 年代早期/中期编写的)并且已经决定它现在应该支持 UNICODE 构建。我研究并发现了许多最佳实践:

  • 使用许多 Microsoft 和 C++ 方法的 _t 版本,如 _stprintf_s() 代替 sprintf_s() 或 _tcsstr() 代替 strstr(),
  • 包装所有需要为 TCHAR* 的编码字符串,例如 _T("string") 或 _T('c'),
  • 将大多数 char* 替换为 LPTSTR,将大多数 const char* 替换为 LPCTSTR,将 char 替换为 TCHAR 如有必要,使用 CA2T() 和 CT2A() 在 char* 和 LPTSTR 之间进行转换,

我想知道是否有人编写了能够自动进行其中许多更改的脚本,因为它们可以节省我几个月的工作时间。

最佳答案

我认为this approach完全适合您的场景。

将所有字符串保留为窄字符,像以前一样使用 sprintfstrstr,从始终假定为没有 BOM 的 UTF-8 的文本文件中读取和写入,等等...您需要更改的只是与系统的通信。假设现在字符串是 UTF-8,并且在调用 MFC 或 Windows 之前,即时转换为 UTF-16。

作为奖励,与 Microsoft 提倡的方法相比,您将更容易移植到非 Windows 平台。

关于c++ - 协助在 MFC 中从多字节移植到 UNICODE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11037555/

相关文章:

Xcode中的C++程序不使用outFile输出简单的文本文件

c++ - C++ 中的散列指针值

c++ - c++ 中的位图 - unsigned int 会完成这项工作吗?

c# - 有没有更好的方法来枚举 IEnumerable<char> 中的文本元素?

c++ - 将磁贴添加到 MFC 应用程序

c++ - 我使用 bool 运算符错了吗?

python - 是否有特定范围的 unicode 代码点可以检查表情符号?

mysql - mysql中的问号

c++ - 如何在 MFC 功能包中获取功能区控件以处理 ID_WINDOW_TILE_VERT

c++ - MFC/Win32 中的定时器消息