Автоматически переключаться между std::string и std::wstring в соответствии с настройкой Unicode в MSVC++?

Я пишу DLL и хочу иметь возможность переключаться между настройками Unicode и Multibyte в MSVC++2010. Например, я использую _T("string") а также LPCTSTR а также WIN32_FIND_DATA вместо версий -W и -A и так далее.

Теперь я хочу иметь std::strings, которые меняются между std::string а также std::wstring в соответствии с настройкой Unicode. Это возможно? В противном случае, это, вероятно, будет очень сложным.

1 ответ

Решение

Почему бы не сделать то, что делает Win32 API: используйте широкие символы внутри и предоставьте фасад для преобразования символов DoSomethingA функции, которые просто конвертируют свои данные в Unicode.

Тем не менее, вы могли бы определить tstring типа так:

#ifdef _UNICODE
typedef std::wstring tstring;
#else
typedef std::string tstring;
#endif

или возможно:

typedef std::basic_string<TCHAR> tstring;
Другие вопросы по тегам