4

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

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

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

4

1 回答 1

4

我认为这种方法完全适合您的情况。

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

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

于 2012-06-16T18:39:08.387 回答