C ++, насколько говорит стандарт, не знает о кодировках.Ява делает.Итак, чтобы связать их, заставьте Java генерировать определенную кодировку, например UTF8:
byte[] utf8str = str.getBytes("UTF8");
В C ++ используйте библиотеку, например iconv()
, чтобы преобразовать строку UTF8 в другую строкучетко определенной кодировки (например, std::u32string
с UTF-32, если у вас есть C ++ 11 или std::basic_string<uint32_t>
или std::vector<uint32_t>
в противном случае), или, альтернативно, преобразуйте его в кодировку WCHAR_T
, чтобы сохранитьв std::wstring
и продолжайте преобразовывать ее в многобайтовую строку через стандартную функцию wcstombs()
, если вы хотите взаимодействовать с вашей средой.
Выбор зависит от того, что вам нужно делать сстрока.Для сериализации или обработки текста используйте определенную кодировку (например, UTF-32).Для записи в стандартный вывод с использованием языкового стандарта системы используйте многобайтовое преобразование.(Здесь немного более длинное обсуждение кодировок в C ++.)