@SodiTW

Есть ли в C++ функция преобразующая текст в байты и байты в текст по заданной кодировке?

Есть файл с текстом в кодировке UTF8. Текст считывается с помощью ifstream который использует кодировку ANSI.
Нужно взять считаную строку преобразовать в байты по ANSI после чего преобразовать обратно в строку по UTF8.
Есть ли в C++ функция преобразующая текст в байты и байты в текст по заданной кодировке?
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
В С++ есть codecvt для конфертации между кодировками.

С помощью его можно читать файлы в utf_8, например, так:
std::ifstream f("file.txt");
std::wbuffer_convert<std::codecvt_utf8<wchar_t>> conv(f.rdbuf());
std::wistream wf(&conv);


Потом читаете из wistream, как будто это обычный cin. Только вместо char нужен wchar_t, а вместо string - wstring.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@12rbah
Получить массив байт c_str
поменять кодировку, либо используйте iconv,
либо https://github.com/unicode-org/icu.
Как по мне первый вариант проще.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы