协助从MFC中的Multi-Byte移植到UNICODE

时间:2012-06-14 16:37:41

标签: c++ unicode mfc multibyte

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

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

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

1 个答案:

答案 0 :(得分:4)

我认为this approach完全适合您的情况。

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

作为奖励,与微软提倡的方法相比,您可以更轻松地移植到非Windows平台。