Форум программистов, компьютерный форум, киберфорум
Наши страницы

iconv - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проверка многоугольника на выпуклость http://www.cyberforum.ru/cpp-beginners/thread730427.html
Здравствуйте. Не заходит вырезано задача. Не могу понять, почему. Проверял на схожесть знаков ориентированные площади треугольников из точек. Код: #include <iostream> #include <vector>...
C++ Перевод из 2-ой в 8-ую СС Необходимо реализовать перевод чисел из двоичной в восьмеричную систему счисления. http://www.cyberforum.ru/cpp-beginners/thread730410.html
Матрица (Найти вектор B(l), каждый элемент которого равен среднему арифметическому элементов...) C++
Задана матрица A(k,l). Найти вектор B(l), каждый элемент которого равен среднему арифметическому элементов соответствующего столбца матрицы А. Похожие темы...
Составить процедуру, выполняющую сжатие массива удалением элементов, значение которых меньше заданного числа C++
Составить процедуру, выполняющую сжатие массива удалением элементов, значение которых меньше заданного числа. Вывести на экран максимальное значение среди удалённых элементов. Решите пожалуйста,...
C++ Прочитать одной строкой с файла http://www.cyberforum.ru/cpp-beginners/thread730382.html
собственно в этом и вопрос, как считать целой строкой #include <iostream> #include <iomanip> #include <sstream> #include <string> #include <fstream> using namespace std; ...
C++ Строки (Расположить слова строки в порядке, обратном исходному) Здравствуйте,помогите пожалуйста. Задание: Расположить слова строки в порядке, обратном исходному. подробнее

Показать сообщение отдельно
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
14.12.2012, 13:22
Avazart, М. Ну у меня есть N codecvt классов, каждый производен от стандартного std::codecvt. Есть удобная обертка над iconv, где в одном месте все по факту конвертируется. Есть converterstream, в который выставляется codecvt (через imbue), у него есть метод str, в котором он конвертирует вообщем-то. Все работает быстро, красиво, удобно, надежно.) Работа с непосредственно iconv-ом в первом коде, остальное уже частности.

Так же в другом месте, где просто нужно конвертнуть, есть простенькая функция.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
std::string convert_encoding(const std::string& data, const std::string& from, const std::string& to)
{
   if (data.empty())
   {
      return std::string();
   }
   iconv_t convert_hnd = iconv_open(to.c_str(), from.c_str());
   if (convert_hnd == (iconv_t)(-1))
   {
      throw std::logic_error("unable to create convertion descriptor");
   }
 
   char* in_ptr = const_cast<char*>(data.c_str());
   std::size_t in_size = data.size();
   std::vector<char> outbuf(6 * data.size());
   char* out_ptr = &outbuf[0];
   std::size_t reverse_size = outbuf.size();
 
   std::size_t result = iconv(convert_hnd, &in_ptr, &in_size, &out_ptr, &reverse_size);
   iconv_close(convert_hnd);
   if (result == (std::size_t)(-1))
   {
      throw std::logic_error("unable to convert");
   }
   return std::string(outbuf.data(), outbuf.size() - reverse_size);
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru