Я изменяю чужой код, который широко использует TCHAR. Лучше ли просто использовать std::wstring в моем коде? wstring должен быть эквивалентен TString на широкоформатных платформах, поэтому я не вижу проблемы. Обоснование заключается в том, что проще использовать необработанную строку wstring, чем поддерживать TCHAR... например, используя boost: wformat.
Какой стиль будет более понятен следующему сопровождающему? Я сам потратил несколько часов, пытаясь понять тонкости строк, кажется, простое использование wstring отрежет половину материала, который вам нужно понять.
typedef std::basic_string<TCHAR> TString; //on winxp, TCHAR resolves to wchar_t
typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wstring;
... единственная разница - это распределитель.
В том маловероятном случае, если ваша программа окажется на компьютере с Windows 9x, все еще существует уровень API, который может преобразовать ваши строки UTF-16 в 8-битные символы. Нет смысла использовать TCHAR для разработки нового кода. источник