Доброго. Мне нужно преобразовать String^ в string. Делаю это так:
wstring wstr;
string str;
// String^ -> const wchar_t *.
pin_ptr< const wchar_t > ptr = PtrToStringChars( gcstr );
// const wchar_t * -> wstring.
wstr = ptr;
// wstring -> string
str.assign( wstr.begin(), wstr.end() );
Но это неправильный метод, т.к. str.assign() для не ansi символов вернёт белиберду. На
so извращаются по-разному и мне хотелось бы узнать, а нет ли какого уже устоявшегося варианта преобразования wstring в string для C++/CLI? Меня интересует более менее короткий вариант преобразования из двухбайтового в однобайтовое представление. Если можно, не сильно углубляясь в WinAPI, а какими-нибудь библиотечными функциями. Пишут про использование marshal_as, но я не могу эту обёртку использовать, т.к. вылезает куча конфликтов имён C++ и .Net при подключении необходимых заголовочников.