В общем, вы не должны смешивать эти две кодировки.Однако сообщения об исключениях представляют интерес только для разработчика (например, в файлах журналов) и никогда не должны показываться пользователю (но обратите внимание на комментарий Джима для получения важной оговорки).
Таким образом, вы в безопасности, если вы используете UNICODE
для всего пользовательского интерфейса и все еще используете std::exception
и т. Д. За кулисами для сообщений разработчиков.Не должно быть необходимости когда-либо конвертировать между ними.
Кроме того, это хороший прием для определения typedef
для UNICODE
-независимых строк в C ++:
typedef std::basic_string<TCHAR> tstring;
…и аналогично определить tcout
, tcin
и т. д. условно:
#ifdef UNICODE
std::wostream& tcout = std::wcout;
std::wostream& tcerr = std::wcerr;
std::wostream& tclog = std::wclog;
std::wistream& tcin = std::wcin;
#else
std::ostream& tcout = std::cout;
std::ostream& tcerr = std::cerr;
std::ostream& tclog = std::clog;
std::istream& tcin = std::cin;
#endif