TCHARを広範囲に使用する他の誰かのコードを変更しています。コードでstd::wstringを使用する方が良い形式ですか?wstringは、widecharプラットフォームのTStringと同等である必要があるため、問題は発生しません。理論的根拠は、TCHARをサポートするよりも生のwstringを使用する方が簡単です...たとえば、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;
...唯一の違いはアロケータです。
プログラムがWindow9xマシンに到達するというまれなケースでは、UTF-16文字列を8ビット文字に変換できるAPIレイヤーがまだあります。新しいコード開発にTCHARを使用しても意味がありません。 ソース