Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование utf-8 в utf-32 и обратно 
:(
    Опции темы
sitev
Дата 26.2.2015, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 22.10.2009

Репутация: нет
Всего: нет



Как выполнить преобразование из utf-8 в utf-32 и обратно?

Есть ли такие функции в библиотеке boost?
PM MAIL   Вверх
DarthTon
Дата 26.2.2015, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 7.2.2009

Репутация: нет
Всего: 6



С++11
Код

#include <locale>
#include <codecvt>

std::u32string UTF8ToUTF32( const std::string& input )
{
    std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> conv;
    return conv.from_bytes( input );
}

std::string UTF32ToUTF8( const std::u32string& input )
{
    std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> conv;
    return conv.to_bytes( input );
}

PM MAIL   Вверх
sitev
Дата 27.2.2015, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 22.10.2009

Репутация: нет
Всего: нет



DarthTon, у меня Ubuntu, gcc версии 4.9.1, которая якобы поддерживает C++11.... однако не находит файл codecvt, то есть #include <codecvt> не работает...

А без С++11 как сделать?


PM MAIL   Вверх
Guinness
Дата 27.2.2015, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 21.6.2009
Где: Зеленоград

Репутация: нет
Всего: 10



А что сказал google и почему его выдача Вас не устроила?
PM MAIL   Вверх
sitev
Дата 27.2.2015, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 22.10.2009

Репутация: нет
Всего: нет



Guinness, разное говорит... ну например: 
Цитата

it is missing the support for codecvt, even on the latest version.


попробую компилить онлайн компилятором, тоже ошибка:
https://ideone.com/IIZaen
PM MAIL   Вверх
Guinness
Дата 27.2.2015, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 21.6.2009
Где: Зеленоград

Репутация: нет
Всего: 10



Я про это:
Цитата(sitev @  26.2.2015,  14:37 Найти цитируемый пост)
Как выполнить преобразование из utf-8 в utf-32 и обратно?

Есть ли такие функции в библиотеке boost? 


PM MAIL   Вверх
sitev
Дата 27.2.2015, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 22.10.2009

Репутация: нет
Всего: нет



Guinness, получилось что-то вроде этого:

Код

#ifdef linux
#include <uchar.h>
#endif

#include <fstream>
using namespace std;


#include <boost/locale.hpp>

int main() {

    ifstream f("/tmp/1.txt");
    string s;
    getline(f, s);

    cout << "len = " << s.length() << endl;

    basic_string<char32_t> utf32 = boost::locale::conv::utf_to_utf<char32_t>(s);
    cout << "len = " << utf32.length() << endl;

    string utf8 = boost::locale::conv::utf_to_utf<char>(utf32);
    cout << "len = " << utf8.length() << endl;

    getchar();
}


в файле /tmp/1.txt пишем в utf-8 и преобразовываем сначала в utf-32, потом обратно

Это сообщение отредактировал(а) sitev - 27.2.2015, 14:01
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0737 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.