2012-06-14 1 views
4

У меня есть немного утомительного 6 месяцев до года впереди меня. Я работаю над программой с 1 млн. Строк кода (большая часть из них написана в начале/середине 90-х), и было решено, что теперь она должна поддерживать сборку UNICODE. Я исследовал и обнаружил, что многие из лучших практик:Помощь с портированием из нескольких байт в UNICODE в MFC

  • используя версию _t многих Microsoft и C++ методы как _stprintf_s() вместо sprintf_s() или _tcsstr() вместо strstr(),
  • обертывание всех закодированных строк, которые должны быть TCHAR *, такие как _T («строка») или _T ('c'),
  • заменяет большинство символов char * на LPTSTR и большинство const char * с LPCTSTR и char с TCHAR с использованием CA2T() и CT2A() для преобразования между char * и LPTSTR, если необходимо,

Мне было интересно, написал ли кто-нибудь скрипт, способный автоматически делать многие из этих изменений, поскольку они могли бы сэкономить мне МЕСЯЦЫ работы.

+1

Я думаю, что это помощь: http://mihai-nita.net/2007/12/19/tounicode-automating-some-of-the-steps-of-unicode-code-conversion-windows/ – chris

+2

Если это реальное обновление и больше не нужно многобайтов, вам нужно пропустить все вещи '_t' и перейти непосредственно к' wchar_t'. «_t' и' _T »были разработаны как временная помощь примерно 15 лет назад. –

+0

Но есть ли причина не использовать _t и _T? Насколько я могу судить, для установки строк wchar_t по-прежнему требуется _T (""), и использование LPWSTR vs LPTSTR, похоже, не приносит никаких дополнительных усилий. –

ответ

4

Я думаю, this approach точно соответствует вашему сценарию.

Оставьте все ваши строки узкими символами, используйте sprintf и strstr, как и прежде, читайте и пишите из текстовых файлов, которые всегда считаются UTF-8 без спецификаций и т. Д. Все, что вам нужно изменить, это ваше сообщение с система. Предположим теперь, что строки UTF-8 и до вызова в MFC или Windows преобразуют в UTF-16 на лету.

В качестве бонуса вы получите более легкую переносимость для платформ, отличных от Windows, по сравнению с подходом, рекомендованным Microsoft.