Я читал Приложение Страуструпа (особое внимание к Locales и Codecvt). Страуструп не дает хорошего codecvt и расширяет пример (ИМХО). Я пытался выключить вещи из интернета без радости. Я также безуспешно пытался наполнить струнные потоки.
Может ли кто-нибудь показать (и объяснить) код для перехода от кодировки UTF-8 к кодировке UTF-16 (или UTF-32)? ПРИМЕЧАНИЕ: Я не знаю заранее размер строки ввода / вывода, поэтому я ожидаю, что решение должно использовать reserve
и back_inserter
. Пожалуйста, не используйте out.resize(in.length()*2)
.
Когда закончите, было бы замечательно, если бы код действительно работал (просто удивительно, сколько там сломанного кода). Пожалуйста, убедитесь, что следующие «круглые поездки». Байты ниже - это символ Хан для «кости» в UTF-8 и UTF- {16 | 32}.
const std::string n("\xe9\xaa\xa8");
const std::wstring w = L"\u9aa8";
Мои извинения за основной вопрос. В Windows я использую Win32 API, и у меня нет этих проблем при перемещении между кодировками.