Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2015, 17:51   #1
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию Какая область применения у codecvt?

Друзья, поясните, пожалуйста, для чего нужно использовать codecvt? Везде пишут, что его прямое назначение - преобразование кодировок. Так пишет и сам Страуструп. Но на деле, codecvt применим только к потокам использующим файловый буфер.

Применить его к, например, stringstream без костылей (std::wstring_convert) нельзя. К тому же, эти костыли еще и не реализованы в gcc, насколько я понял.

Так зачем же нужен codecvt? И нужно ли пытаться использовать его для преобразования кодировок или лучше использовать другой инструмент?
В планах порабощение вселенной...
zumm вне форума Ответить с цитированием
Старый 13.08.2015, 18:00   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Возможно, эта статья как-то прояснит суть.
Streletz вне форума Ответить с цитированием
Старый 13.08.2015, 18:10   #3
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от zumm Посмотреть сообщение
Так зачем же нужен codecvt? И нужно ли пытаться использовать его для преобразования кодировок или лучше использовать другой инструмент?
Мало-ли, что Страус пишет (или псал). Свой ум есть? Если нету, никакой страус не поможет. "Пилите, Шура, пилите, она - золотая."
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 13.08.2015, 18:15   #4
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию

Streletz, читал. Увы, сути она не проясняет. Примеры там основываются на стандартных потоках ввода/вывода, которые как раз таки и используют файловый буфер.

Smitt&Wesson, что у вас вечно за агрессивные ответы? Я все понимаю, надоели нубы, но ведь можно же просто пройти мимо?
Я без труда напишу свой велосипед или воспользуюсь бустом, но вопрос то не в этом. Вопрос в том, зачем был задуман такой класс как codecvt в c++ и как его правильно использовать.
В планах порабощение вселенной...
zumm вне форума Ответить с цитированием
Старый 13.08.2015, 19:04   #5
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Так зачем же нужен codecvt?
грубо говоря для преобразования внутренний_тип_символов <-> внешний_тип_символов.
Почитайте о фацетах (фасетах?)
В какой-то книжке видел хорошее вступление в эту тему, могу поискать вечером, если нужно.
Croessmah вне форума Ответить с цитированием
Старый 13.08.2015, 19:14   #6
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию

Croessmah, да, я знаю это. Но вот незадача, он работает только с потоками имеющими файловый буфер. То есть, если данные программа получает из какого-то потока, у которого не файловый буфер (к примеру, stringstream), применить codecvt не выйдет.

На тему фасетов хорошо пишет сам Страуструп, например, в "Язык программирования C++, специальное издание". Но увы, момент который меня так интересует, там никак не обсуждается.
В планах порабощение вселенной...

Последний раз редактировалось zumm; 13.08.2015 в 19:21.
zumm вне форума Ответить с цитированием
Старый 13.08.2015, 20:28   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от zumm Посмотреть сообщение
что у вас вечно за агрессивные ответы? Я все понимаю, надоели нубы, но ведь можно же просто пройти мимо?
Нубы, действительно надоели. Но, геофизик и перебирать дерьмо, как-бы моя профессия. Ну, делаю выводы, которые не нравятся с точки зрения банальной эрудиции. Но, это издержки производства....
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 13.08.2015, 23:28   #8
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию

Поговорили с автором статьи на хабре, предложенной Streletz, и пришли к выводу, что codecvt это еще одна идея из разряда "хотели как лучше, а получилось как всегда". Не смотря на то, что он задуман, как преобразователь кодировок, по стандарту реализации буферов потоков не обязаны его использовать. Вот и вышло, что basic_filebuf его использует, а вот basic_stringbuf уже нет. И плакала универсальность.

Статья на хабре исправлена, вопрос решен. Расходимся.
В планах порабощение вселенной...
zumm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Применения эффекта к фото FASM neomax38 Фриланс 0 10.06.2013 20:13
Поясните смысл применения константов Van-89 Паскаль, Turbo Pascal, PascalABC.NET 2 12.04.2012 21:26
применения Java RedScreenOfLife Софт 9 16.06.2011 10:00
Целесообразность применения out Miha85193 Общие вопросы Delphi 4 18.06.2010 21:00
Область применения переменных ixs Общие вопросы Delphi 2 05.06.2008 18:00