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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск рус. слова в переменной типу STRING, поиск слово рус. стринг string 
:(
    Опции темы
mes
Дата 27.4.2012, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(volatile @  27.4.2012,  11:44 Найти цитируемый пост)
В том то все и дело, что об этом почти  никто не вспоминает.

аргумент  smile 


--------------------
PM MAIL WWW   Вверх
baldina
Дата 27.4.2012, 13:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



драма тут непричем. это вообще не пьеса. скорее, очерк)))
я честно пытался припомнить, приходилось ли мне когда-нибудь сортировать строку. или моим знакомым. или хотя бы задачу решенную иным способом, но где такое имело бы место быть. не припомнил.
PM MAIL   Вверх
mes
Дата 27.4.2012, 13:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(borisbn @  27.4.2012,  12:08 Найти цитируемый пост)
Я бы так сформулировал: строку в utf-8 в

более жестко: со строкой кроме хранения и передачи ничего нельзя делать, пока не знаешь откуда она пришла и что из себя представляет..

Добавлено через 2 минуты и 10 секунд
Цитата(baldina @  27.4.2012,  12:16 Найти цитируемый пост)
 приходилось ли мне когда-нибудь сортировать строку. или моим знакомым. или хотя бы задачу решенную иным способом

ну так volatilе уже вспоминал студенческие задания, и сетовал на отсутсвие в них "проверки на дурака" от не той кодировки.. 



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


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



а, про драму это не про сортировку, а про хранение/обработку. посыпаю голову.
...
вобщем-то нет иной потребности использовать какую-либо конкретную кодировку, кроме задач ввода/вывода.
конечно удобнее всего вообще об этом не думать, но не получается. просто потому, что кодировок более одной.

Добавлено через 2 минуты и 18 секунд
мне инструктор говорил: не смотри на приборы. только на дорогу.
есть две правды, для обучающихся и умеющих. острые предметы детям не дают.

Добавлено через 4 минуты и 29 секунд
Цитата(mes @  27.4.2012,  13:16 Найти цитируемый пост)
студенческие задания

ну если только... и то - не умно

PM MAIL   Вверх
volatile
Дата 28.4.2012, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



Цитата(baldina @  27.4.2012,  13:16 Найти цитируемый пост)
честно пытался припомнить, приходилось ли мне когда-нибудь сортировать строку

А проходить строку итератором, к примеру, вам тоже не приходилось?

Цитата(mes @  27.4.2012,  13:16 Найти цитируемый пост)
сетовал на отсутсвие в них "проверки на дурака" от не той кодировки.. 

Если это кодировка системы по умолчанию, зачем проверка? Строка по умолчанию идет в UTF-8.
Значит любой код и нужно писать с учетом того что это utf8.
Получается, что студенты учатся на одном, а реале нужно оказывается делать совсем другое.

Цитата(baldina @  27.4.2012,  13:24 Найти цитируемый пост)
вобщем-то нет иной потребности использовать какую-либо конкретную кодировку, кроме задач ввода/вывода

Да, причем
Цитата(borisbn @  27.4.2012,  13:08 Найти цитируемый пост)
 всё, что вводит пользователь - обязательно "анэскейпить". В нашем случае - переводить либо в свою однобайтовую кодировку, либо в utf-16,


Это выход.

Это сообщение отредактировал(а) volatile - 28.4.2012, 01:46
PM MAIL   Вверх
volatile
Дата 28.4.2012, 04:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



Цитата(baldina @  27.4.2012,  13:16 Найти цитируемый пост)
я честно пытался припомнить, приходилось ли мне когда-нибудь сортировать строку. или моим знакомым. или хотя бы задачу решенную иным способом, но где такое имело бы место быть. не припомнил. 

И что? что вообще из этого следует?
Например на обвинения в небезопасности принтфа, теоретически достаточным ли будет аргумент:
мне (и даже моим знакомым), никогда не приходилось передавать число вместо строки, или наоборот?

Вам не приходилось сортировать строку? Хорошо!
Значит вы знаете какими алгоритмами можно пользоваться, а кикими нельзя!
Может вы знает список таких разрешений? этим алгоритмом можно пользоваться, тем нельзя?
Где, в каком месте стандарта это написано?

И кто даст гарантию что даже безобидный (как вам кажется) алгоритм, не натворит бед?
Чтоб это утвержать, нужно изучать внутренний код алгоритма, а это уже никакими стандартами не оговоривается.


Это сообщение отредактировал(а) volatile - 28.4.2012, 04:30
PM MAIL   Вверх
mes
Дата 28.4.2012, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(volatile @  28.4.2012,  00:43 Найти цитируемый пост)
А проходить строку итератором, к примеру, вам тоже не приходилось?

сотни раз и никаких проблем smile в том числе и с сортировкой содержимого строк.. 

Цитата(volatile @  28.4.2012,  00:43 Найти цитируемый пост)
Если это кодировка системы по умолчанию, зачем проверка? Строка по умолчанию идет в UTF-8. Значит любой код и нужно писать с учетом того что это utf8.

код может быть быть запущен на системе, на которой установлена любая кодировка.. и если этот код требует ввода вывода расширенных символов, программа должна предусматривать это .. 

Цитата(volatile @  28.4.2012,  00:43 Найти цитируемый пост)
Получается, что студенты учатся на одном, а реале нужно оказывается делать совсем другое.

Получается, что у студентов должна быть отдельная тема посвещенная работе со строками "в различных условиях".. 

Цитата(volatile @  28.4.2012,  00:43 Найти цитируемый пост)
Да, причем
Цитата

 всё, что вводит пользователь - обязательно "анэскейпить". В нашем случае - переводить либо в свою однобайтовую кодировку, либо в utf-16

Это выход.

Это обязательное правило хорошего тона программирования.. 

Цитата(volatile @  28.4.2012,  03:26 Найти цитируемый пост)
Может вы знает список таких разрешений? этим алгоритмом можно пользоваться, тем нельзя?
Где, в каком месте стандарта это написано?

есть три типа строк : singlechar, widechar и multibyte.. 
если алгоритм работает по-символьно, то применять можно только к первым двум.. 

Цитата(volatile @  28.4.2012,  03:26 Найти цитируемый пост)
И кто даст гарантию что даже безобидный (как вам кажется) алгоритм, не натворит бед?

соблюдать правила хорошего тона.. тогда ни себе, ни другим не создадите проблем.. 

Цитата(volatile @  28.4.2012,  03:26 Найти цитируемый пост)
Чтоб это утвержать, нужно изучать внутренний код алгоритма, а это уже никакими стандартами не оговоривается.

дока и логика - и никаких проблем smile



Это сообщение отредактировал(а) mes - 28.4.2012, 09:54


--------------------
PM MAIL WWW   Вверх
mes
Дата 28.4.2012, 10:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(volatile @  28.4.2012,  03:26 Найти цитируемый пост)
 на обвинения в небезопасности принтфа

мне кажется вы главного пропускаете.. 

printf как раз и есть аналог метода за который вы голосуете -выбрать однобайтовую кодировку и наживать проблемы при адаптации ее под другие.. (я специально вспоминал француза).. 

Другой же подход, позволяет безопасно и не парясь работать с любым языком и даже одновременно с нескольками ценой подключения пары хидеров.. 


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


hell is here
**


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

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



Цитата(mes @  28.4.2012,  10:08 Найти цитируемый пост)
printf как раз и есть аналог метода за который вы голосуете -выбрать однобайтовую кодировку и наживать проблемы при адаптации ее под другие.. (я специально вспоминал француза).. 

мне кажется он говорил про 4-х байтную -  с которой как раз проблем не должно быть (при использовании w*-функций)
PM MAIL   Вверх
mes
Дата 28.4.2012, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(alexvs11 @  28.4.2012,  10:03 Найти цитируемый пост)
мне кажется он говорил про 4-х байтную -  с которой как раз проблем не должно быть (при использовании w*-функций) 

wchar не всегда 4х байтен smile 

alexvs11,  вы думаете volatile предлагал отказаться от простой string (без w) ? 


--------------------
PM MAIL WWW   Вверх
borisbn
Дата 28.4.2012, 12:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



Цитата(mes @  28.4.2012,  12:25 Найти цитируемый пост)
 вы думаете volatile предлагал отказаться от простой string (без w) ?

Сорри, что влезаю в вашу беседу, но ИМХО volatile предлагал отказаться от работы с Utf-8


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
volatile
Дата 28.4.2012, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



borisbn, вы лучше всех понимаете меня, спасибо.

alexvs11, Насчет принтфа. Это была просто аналогия, призванная показать непоследовательность отношения к безопасности, не более. Оставим его.

Цитата(mes @  28.4.2012,  09:53 Найти цитируемый пост)
сотни раз и никаких проблем  в том числе и с сортировкой содержимого строк.. 

mes,  Нисколько не сомневаюсь в ваших способностях.
Но здесь речь идет о безопасности, о которой так любят рассуждать С++ теоретики.
А ваш аргумент из разряда "я делал, и все ништяк".

Цитата(mes @  28.4.2012,  09:53 Найти цитируемый пост)
код может быть быть запущен на системе, на которой установлена любая кодировка..

mes, Здесь, собственно, обсуждается вопрос не об абстрактном случае с неизвестной кодировкой, а о вполне конкретном.
Кодировка определена, и эта кодировка - UTF-8!

Что можно делать с utf строкой?
Например:
Можно ли вообще, применять к ней какие -либо стандартные алгоритмы?
Если можно, то какие именно?

Можно ли, применять к ней какие -либо методы std::string?
Все ли методы можно / не все?
Если последнее, какие именно?

Цитата(mes @  28.4.2012,  09:53 Найти цитируемый пост)
есть три типа строк : singlechar, widechar и multibyte.. 
если алгоритм работает по-символьно, то применять можно только к первым двум.. 

Есть где-то ранжировка алгоритмов? (я честно, просто не в курсе, если есть то, не могли бы вы указать где именно?)
Вопрос актуальный, так как сорт, как мы выяснили, нельзя применять к стринг. 
Возникает вопрос, насчет других алгоритмов.
Это же отностися и к методам.
Как напрмер вы о относитесь к применению таких методам, как: rbegin(), rend(), at(), operator[]?


Цитата(mes @  28.4.2012,  09:53 Найти цитируемый пост)
Это обязательное правило хорошего тона программирования.. 

Здесь мы, собственно пришли к консенсусу.
Рад что мы пришли к такому выводу. 

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


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 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
PM MAIL   Вверх
mes
Дата 28.4.2012, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(volatile @  28.4.2012,  12:11 Найти цитируемый пост)
Но здесь речь идет о безопасности, о которой так любят рассуждать С++ теоретики.
А ваш аргумент из разряда "я делал, и все ништяк".

рад что Вы это отметили, и я намерено с целью провокации ответил так..  потому что в том ракусе в каком Вы его задали, напрашивается именно такой "неаргументированный" ответ.. Если б Вы перешли на вопрос о сферах применения кодировок, о методах безопасной работы с ними, то и ответ был бы более аргументированым.. хотя основные тезисы, оталкиваясь от которых можно представить полную картину, уже прозвучали и не один раз.. 
Я думаю в теме надо сделать паузу, чтоб дать возможность переварить всевышесказанное smile главное опирайтесь на то, что за утф8 голосовали именно из за удобства , а не из за религиозных чувств.. 
А против, уже имхо, в основном "из за страха" перед нестандартной кодировкой.. а у него как говорится, глаза велики smile



Это сообщение отредактировал(а) mes - 28.4.2012, 13:45


--------------------
PM MAIL WWW   Вверх
volatile
Дата 28.4.2012, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



Цитата(mes @  28.4.2012,  13:44 Найти цитируемый пост)
Я думаю в теме надо сделать паузу

Ок.

boostcodermesbaldina
Изначально, моей целью было не доказательство чего-то, кому-то, а скорее желание дать добрый совет.
И уж конечно не вам опытным "монстрам" программирования, а скорее новичкам, тем кто будет читать эту тему.
Совет прост:
Не использовать, а если использовать, то быть предельно внимательными, с кодировкой UTF8
Потому-то часто (поверьте очень часто), я видел баги именно из-за этой кодировки.
Вы возможно спросите почему вам не приходилось видеть такие, баги?
Скажу так, мне приходилось заниматься одно время копанием в машинных кодах, без исходников. 
Это не программинг. Именно там я понял насколько опасна эта кодировка.
Не кого не заставляю следовать этому совету! просто добрый совет, поверьте.

Я не хотел скатываться до жестких требований цитат из стандарта. (просто не любитель подобной дискуссии)
сожалею, что пришлось это сделать.

Большое спасибо всем!

borisbn - вам персонально! smile


PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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