В соответствии с руководством , pugi::char_t
- это либо char
, либо wchar_t
, в зависимости от конфигурации вашей библиотеки.Это сделано для того, чтобы вы могли переключаться между одиночными байтами (ASCII или UTF-8) и двойными байтами (обычно UTF-16/32).
Это означает, что вам не нужно ничего менять.Однако, если вы используете вариант wchar_t*
, вам придется использовать соответствующий объект потока:
#ifdef PUGIXML_WCHAR_MODE
std::wcout << it->name();
#else
std::cout << it->name();
#endif
И, как вы просили, построить из него std::string
или std::wstring
:
#ifdef PUGIXML_WCHAR_MODE
std::wstring str = it->name();
#else
std::string str = it->name();
#endif
Или, для всегда std::string
( это редко то, что вы хотите! ):
#ifdef PUGIXML_WCHAR_MODE
std::string str = as_utf8(it->name());
#else
std::string str = it->name();
#endif
Надеюсь, это поможет.
Источник: Беглый взгляд на документацию "pugixml".