![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
аргумент ![]() |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
драма тут непричем. это вообще не пьеса. скорее, очерк)))
я честно пытался припомнить, приходилось ли мне когда-нибудь сортировать строку. или моим знакомым. или хотя бы задачу решенную иным способом, но где такое имело бы место быть. не припомнил. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
более жестко: со строкой кроме хранения и передачи ничего нельзя делать, пока не знаешь откуда она пришла и что из себя представляет.. Добавлено через 2 минуты и 10 секунд
ну так volatilе уже вспоминал студенческие задания, и сетовал на отсутсвие в них "проверки на дурака" от не той кодировки.. |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
а, про драму это не про сортировку, а про хранение/обработку. посыпаю голову.
... вобщем-то нет иной потребности использовать какую-либо конкретную кодировку, кроме задач ввода/вывода. конечно удобнее всего вообще об этом не думать, но не получается. просто потому, что кодировок более одной. Добавлено через 2 минуты и 18 секунд мне инструктор говорил: не смотри на приборы. только на дорогу. есть две правды, для обучающихся и умеющих. острые предметы детям не дают. Добавлено через 4 минуты и 29 секунд ну если только... и то - не умно |
|||
|
||||
volatile |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
А проходить строку итератором, к примеру, вам тоже не приходилось?
Если это кодировка системы по умолчанию, зачем проверка? Строка по умолчанию идет в UTF-8. Значит любой код и нужно писать с учетом того что это utf8. Получается, что студенты учатся на одном, а реале нужно оказывается делать совсем другое.
Да, причем
Это выход. Это сообщение отредактировал(а) volatile - 28.4.2012, 01:46 |
||||||||
|
|||||||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
И что? что вообще из этого следует? Например на обвинения в небезопасности принтфа, теоретически достаточным ли будет аргумент: мне (и даже моим знакомым), никогда не приходилось передавать число вместо строки, или наоборот? Вам не приходилось сортировать строку? Хорошо! Значит вы знаете какими алгоритмами можно пользоваться, а кикими нельзя! Может вы знает список таких разрешений? этим алгоритмом можно пользоваться, тем нельзя? Где, в каком месте стандарта это написано? И кто даст гарантию что даже безобидный (как вам кажется) алгоритм, не натворит бед? Чтоб это утвержать, нужно изучать внутренний код алгоритма, а это уже никакими стандартами не оговоривается. Это сообщение отредактировал(а) volatile - 28.4.2012, 04:30 |
|||
|
||||
mes |
|
||||||||||||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
сотни раз и никаких проблем ![]()
код может быть быть запущен на системе, на которой установлена любая кодировка.. и если этот код требует ввода вывода расширенных символов, программа должна предусматривать это ..
Получается, что у студентов должна быть отдельная тема посвещенная работе со строками "в различных условиях"..
Это обязательное правило хорошего тона программирования..
есть три типа строк : singlechar, widechar и multibyte.. если алгоритм работает по-символьно, то применять можно только к первым двум..
соблюдать правила хорошего тона.. тогда ни себе, ни другим не создадите проблем..
дока и логика - и никаких проблем ![]() Это сообщение отредактировал(а) mes - 28.4.2012, 09:54 |
||||||||||||||||
|
|||||||||||||||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
мне кажется вы главного пропускаете.. printf как раз и есть аналог метода за который вы голосуете -выбрать однобайтовую кодировку и наживать проблемы при адаптации ее под другие.. (я специально вспоминал француза).. Другой же подход, позволяет безопасно и не парясь работать с любым языком и даже одновременно с нескольками ценой подключения пары хидеров.. |
|||
|
||||
alexvs11 |
|
|||
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: 6 Всего: 10 |
мне кажется он говорил про 4-х байтную - с которой как раз проблем не должно быть (при использовании w*-функций) |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Сорри, что влезаю в вашу беседу, но ИМХО volatile предлагал отказаться от работы с Utf-8 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
volatile |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
borisbn, вы лучше всех понимаете меня, спасибо.
alexvs11, Насчет принтфа. Это была просто аналогия, призванная показать непоследовательность отношения к безопасности, не более. Оставим его.
mes, Нисколько не сомневаюсь в ваших способностях. Но здесь речь идет о безопасности, о которой так любят рассуждать С++ теоретики. А ваш аргумент из разряда "я делал, и все ништяк".
mes, Здесь, собственно, обсуждается вопрос не об абстрактном случае с неизвестной кодировкой, а о вполне конкретном. Кодировка определена, и эта кодировка - UTF-8! Что можно делать с utf строкой? Например: Можно ли вообще, применять к ней какие -либо стандартные алгоритмы? Если можно, то какие именно? Можно ли, применять к ней какие -либо методы std::string? Все ли методы можно / не все? Если последнее, какие именно?
Есть где-то ранжировка алгоритмов? (я честно, просто не в курсе, если есть то, не могли бы вы указать где именно?) Вопрос актуальный, так как сорт, как мы выяснили, нельзя применять к стринг. Возникает вопрос, насчет других алгоритмов. Это же отностися и к методам. Как напрмер вы о относитесь к применению таких методам, как: rbegin(), rend(), at(), operator[]? Здесь мы, собственно пришли к консенсусу. Рад что мы пришли к такому выводу. |
||||||
|
|||||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
volatile, string - массив однобайтных элементов, wstring - массив двухбайтных элементов. utf - последовательность элементов разной длины, которая определена правилами (кодировкой). понятно, что алгоритмы работы с массивом одинаковых элементов не подходят для этого.
думаю, тривиальный факт, что дело не в алгоритмах (for_each, find, sort и т.д.), а в контейнере (точнее - поведении итератора). вы уже на трех страницах доказываете, что неправильно использовать string для utf, думая об элементе string::value_type как о символе utf. так с этим никто и не спорит. но: - есть задачи, где не требуется рассматривать элементы контейнера по отдельности. например, при выводе в поток - есть задачи, где это требуется в 1-2 местах, и городить вокруг этого огород просто нецелесообразно. нужно обойтись аккуратно. я не вижу тут проблем и теоретических нарушений. это не хуже чем cast, а против cast в принципе никто не выступает, хотя и признавая что приведений типа должно быть меньше конечно, можно (и в ряде случаев нужно) написать контейнер, учитывающий правила кодировки utf и работать с ним полноценно (впрочем уже написали, utfcpp). Это сообщение отредактировал(а) baldina - 28.4.2012, 13:31 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
рад что Вы это отметили, и я намерено с целью провокации ответил так.. потому что в том ракусе в каком Вы его задали, напрашивается именно такой "неаргументированный" ответ.. Если б Вы перешли на вопрос о сферах применения кодировок, о методах безопасной работы с ними, то и ответ был бы более аргументированым.. хотя основные тезисы, оталкиваясь от которых можно представить полную картину, уже прозвучали и не один раз.. Я думаю в теме надо сделать паузу, чтоб дать возможность переварить всевышесказанное ![]() А против, уже имхо, в основном "из за страха" перед нестандартной кодировкой.. а у него как говорится, глаза велики ![]() Это сообщение отредактировал(а) mes - 28.4.2012, 13:45 |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Ок. boostcoder, mes, baldina, Изначально, моей целью было не доказательство чего-то, кому-то, а скорее желание дать добрый совет. И уж конечно не вам опытным "монстрам" программирования, а скорее новичкам, тем кто будет читать эту тему. Совет прост: Не использовать, а если использовать, то быть предельно внимательными, с кодировкой UTF8 Потому-то часто (поверьте очень часто), я видел баги именно из-за этой кодировки. Вы возможно спросите почему вам не приходилось видеть такие, баги? Скажу так, мне приходилось заниматься одно время копанием в машинных кодах, без исходников. Это не программинг. Именно там я понял насколько опасна эта кодировка. Не кого не заставляю следовать этому совету! просто добрый совет, поверьте. Я не хотел скатываться до жестких требований цитат из стандарта. (просто не любитель подобной дискуссии) сожалею, что пришлось это сделать. Большое спасибо всем! borisbn - вам персонально! ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
2 Пользователей читают эту тему (2 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |