Автоматически переключаться между 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;