![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
botasa |
|
||||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 20.11.2011 Репутация: нет Всего: нет |
Как сделать поиск под слова в переменной типу string из рус. текстом
Например если есть такое : Код C++
то переменная будет нести в себе позицию начала этого слова в строке text Как сделать такое только с рус. текстом ? Например Код C++
то в теории переменная а будет нести в себе позицию начала нужного мне слова, но а мне возвращает -1, и когда я ввожу рус. слова в переменную word и вывожу на екран оно мне кракозябры выводит. как сделать что б при вводе слова в переменную типа STRING оно нормально вводилось и выводилось это надо для поиск вводимого мной слова в тексте |
||||
|
|||||
boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
http://liveworkspace.org/code/b9b8befdc0c4...4fc06063a88aab1 вывод:
все правильно. 13 - потому что слово "Привет" состоит из UTF-8 символов, а каждый из них имеет размер 2 байта. и плюс пробел. того 13. |
||||
|
|||||
botasa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 20.11.2011 Репутация: нет Всего: нет |
а если я ввожу с клавиатуры слово МИР оно кракозябры показивает и не делает сравнение .. как мне это поправить ???
|
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
это зависит от используемой ОС и компилятора.
|
|||
|
||||
botasa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 20.11.2011 Репутация: нет Всего: нет |
Win 7 чистый СП1 Укр/Рус/Анг
комп - MS Visual Studio Ultimate original from MSDN |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
я полагаю лицензии на эти продукты ты можешь предъявить?
смотри тут: http://forum.vingrad.ru/forum/topic-269794...y2086699/0.html третий пост. |
|||
|
||||
botasa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 20.11.2011 Репутация: нет Всего: нет |
а вы что представник Microsoft или из милиции ? че за странной вопрос ...
|
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
>представитель нет. просто любопытно, почему люди крадущие чужие продукты, предпочитают красть, вместо того чтоб купить не нарушая законов. это воскресный оффтоп ![]() |
|||
|
||||
botasa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 20.11.2011 Репутация: нет Всего: нет |
Ну и я себе оффтоп позволю 1 раз =))
не крадут а скачивают, это как робин гуд один украл в богатых и раздает, тем кому раздают я не считаю ворами =))) , не знаю сколько вам лет и сколько вы зарабатываете, но студенту тяжело купить такое =) да без вопросов есть и без. ресурсы, программы, но так как мы живем в Украине / России зачем себе отказывать в удовольствие ? А вы случайно не слышали про такие ресурсы как ex.ua / rutracker и другие ?) там можно сказать сокровище 100-летнего накопления по сравнению с моей ОС и компилятором =) я конечно не за и не против, я так по середине, но вы зайдите к примеру на ютуб или в гугле вбейте видео про то как закрывали ex.ua ресурс полный халявы, и вы увидите там людей больше собралось чем на выборы президента =) Это сообщение отредактировал(а) botasa - 22.4.2012, 17:51 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
ага, знаю я такую девушку: "жила-была девушка робин гуд. у богатых брала, бедным давала." © кто-то там... Добавлено через 1 минуту и 20 секунд ну и правильно. президентов выбирает не народ. |
|||
|
||||
Леопольд |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Стоит второй системой линух поставить (и совесть чиста..). G++ лучше подходит для студента (поведение ближе к стандарту). Советую убунту, там много чего свежего из коробки. Тот же буст... Особенно приятно что не надо мучиться с либами, установил из репов, в проекте прописал и вуаля. Для плюсов предпочитаю IDE Code::Blocks. Эклипс весьма неплох, но нужен мощный агрегат для него. IMHO, программер должен быть на ты с обеими операционками. Кстати, существует бесплатная версия студии. А всякие кряки - не секьюрно это, можно и пострадать... Это сообщение отредактировал(а) Леопольд - 22.4.2012, 22:51 -------------------- вопросов больше чем ответов |
|||
|
||||
Twelves |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 22.6.2011 Репутация: нет Всего: нет |
Для студентов есть DreamSpark. Профессиональная VS бесплатно
|
|||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
УЖОС ![]() Добавлено через 5 минут и 52 секунды т.к. a != std::string::npos, то я наивно надеялся, что имею право вытащить символ
ан нет... -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
Randajad |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 15.3.2012 Репутация: 8 Всего: 8 |
С каких пор UTF-8 появился в std::string? Это обычный ASCII.
А std::wstring - unicode. Там два байта на символ. |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Randajad, сам в шоке... см. ссылку на LWS в первом же сообщении boostcoder'а
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
Randajad |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 15.3.2012 Репутация: 8 Всего: 8 |
Это ваша LWS сохраняет исходник в UTF-8.
![]() GCC 4.8 + исходник в ASCII дают результат у меня 11. А std::string - это просто контейнер char'ов, он не знает что в них. Это сообщение отредактировал(а) Randajad - 23.4.2012, 11:54 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
не знал, что исходники сохраняют в других кодировках ![]() |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Компилятор просто не знает что у него исходники в UTF8
либо вообще не понимает национальные символы. В студии:
Выход: 6 Исходник в UTF8 !!! (впрочем не зависит от кодировки исходника.) Имхо, так и должно быть. А работать с UTF8 в std::string, как с обычным чар - хождение по краю пропасти. |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Потому-что компилятор рабоатет так, как будто нац. символов вообще не существует. А поскольку едиственное отличие UTF8 от ASCII и заключено в нац.символах, то это тоже самое что он не понимает UTF8 Компилятор 1969 года, например, работал бы точно также. Впрочем если в gcc это нормально, то что либо доказать линуксоидам - дело дохлое. (я, по крайней мере, пасс)
От того что вся логика стринга расчитана что там будет набор чаров, а не неизвестно что... ну хотя бы:
Выход: ТЕВИРП Что вобщем-то и должно быть. разве нет? Что будет при UTF8 - даже не берусь сказать. |
||||
|
|||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
reverse же ничего не знает о строке.
с чего бы он должен корректно работать со строкой? то, что он корректно работает со строкой состоящей из однобайтовых символов - скорее совпадение, чем задумка. ибо, этот пример работает корректно, не смотря на то что строка в UTF-8.
http://liveworkspace.org/code/24ad13a7aa89...d388bd9e2b10a8d Это сообщение отредактировал(а) boostcoder - 23.4.2012, 14:46 |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
В студии всё отрабатывает даже если сохранить исходник в Utf-8. Она (ну, скорее компилятор) считает русские символы в кавычках обычными однобайтовыми Си-строками. sizeof( "Привет" ) == 7. std::string str = "Привет"; str.size() == 6.
Так что приведённый пример с std::reverse отрабатывает как задумывалось... Разница на лицо. Гнусавые опять с мелкомягкими идут своими (несовпадающими) путями. Хотя... Мы тут сравниваем тяжёлое и сладкое. Согласно 0x11-му стандарту (!!!)
Студия же не поддерживает этот стандарт. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
cp1251 ? отчасти. но их отказы реализовать то-то и то-то, сделают коды написанные для clang/gcc не переносимыми на их компилятор. |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
||||
|
||||
volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Это смотря как трактовать этот стандарт. По мне так, как раз она его поддерживает. Инициализирует именно данными однобайтовыми символами, а не юникодом, закомуфлированным под однобайтовую последовательность. (ut8 это тоже юникод) ![]() Так что кто здесь отказывается поддерживать стандарт, это еще большой вопрос. Впрочем, для стандартописателей, глубоко пофигу проблемы локализации, они кроме английского ничего никогда не знали. Мелкомягким же приходится работать с нац. символами. Жизнь заставляет, однако. Это сообщение отредактировал(а) volatile - 23.4.2012, 23:35 |
||||
|
|||||
Randajad |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 15.3.2012 Репутация: 8 Всего: 8 |
boostcoder, пример работает потомушто англицкие символы и стандартные знаки кодируются в utf-8 одним байтом.
Добавлено через 5 минут и 4 секунды Кстати, 11-ая студия поддерживает вроде как все из C++0x. Неужели никто не пробовал? ![]() Это сообщение отредактировал(а) Randajad - 24.4.2012, 09:02 |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Кстати, про utf-8. Он действительно хорош только при передаче данных по медленному или дорогому каналу. В ЯП я бы его просто запретил бы. Он там вообще нинужен
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Юникод, имеющий одинаковый размер для любых символов, это и нужно использовать. boostcoder, я скажу свое имхо. В string или в char* нелья использовать UTF8, (Ну только если считать, записать и все). Любое мало-мальски активное использование ведет к нехорошим вещам. Потому-что риск получить в итоге глючную, невменяемую программу - очень высок. Гораздо выше, например чем при использвании printf. Но про принтф, все обязательно любят повозмущаться, что де это нарушение безопастности типов, и т.д, и т.п. В принципе я согласен, но в реале, я никогда не встречал проблем с printf'ом. А вот с UTF8, я встречал и встречаю очень часто. Скажу даже больше, буквально в любой программе, которая активно использует UTF8 с нац. символами - будет ошибка! ну в 99,5%, может быть. ![]() Почему-же так люди возмущаются на printf, и спокойно используют UTF8? Потому-что дядя Страус, так сказал... Но про UTF8, он как-то не обмолвился... Знал бы он что с этим программеры делают... думаю ужаснулся бы старик.. Предлагаю всем такую задачку, не будем брать сложное. Возьмем самое элементарное, для начинающих: Написать функцию возвращающую истину, если в строке есть русская 'А', и ложь, если ее там нет. На вход подается UTF8 строка содержащая произвольные расширенные (в т.ч. может быть и латинские) символы.
Я не знаю как без привлечения "высшей математики", написать такую функцию. Чтоб не скучно было, (++rep) любому, кто напишет правильную функцию, используя стандартые средства ![]() Это сообщение отредактировал(а) volatile - 25.4.2012, 00:59 |
||||
|
|||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Ваша функция матюкается (куча warning'ов), но работает http://liveworkspace.org/code/ba64c628d664...dce4f854bc80ebe и даже так http://liveworkspace.org/code/8c3d9e5dbf29...b70acb5eed65b72 так что volatile.rep++; ![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
вот исправленные версии варианта borisbn.
http://liveworkspace.org/code/6455efa5ee33...227d30e08dbe48a http://liveworkspace.org/code/1e9d68b3a883...837e658c28a0a8c страшные вещи ты говоришь. никогда не использовал другого юникода кроме UTF8. и с UTF8 никаких проблем не замечал. |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
гыыы. а чего ж результаты отличаются ? м.б. потому, что с русскими буквами не работал ? Только с английскими ? Это сообщение отредактировал(а) borisbn - 25.4.2012, 09:01 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
потому что в строке 'Тут русская ' - 22 байта. буква 'A' - 23 Это сообщение отредактировал(а) boostcoder - 25.4.2012, 09:15 |
|||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
я про это
Вывод
http://liveworkspace.org/code/2bb3580795d1...83e17a424a71632 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
русская 'А' состоит из двух байт.
поэтому where_russsianA_char() не должна корректно работать. Добавлено через 58 секунд я использую эту хидер-онли, STL совместимую, микро-либу. |
|||
|
||||
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
однако ж )
Вы смешиваете понятие "строка" с понятием "контейнер для строки".. ![]() Если нужно оперировать посимвольно, то конечно лучше широкосимвольная строка, но есть ряд задач когда односимвольная строка будет подходящим контейнером..
если знаешь с чем работаешь - никакой пропасти ![]() Добавлено через 5 минут и 12 секунд P.S. о том, в какой кодировке хранить исходники, отдельный вопрос .. В любой случае при использовании нац символов это ложится на плечи программиста и должно согласовываться отдельным соглашением.. |
||||||
|
|||||||
volatile |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Спасибо друзья! Спасибо что лишний раз наглядно показали, что использовать utf8 - крайне опасно.
Увы, ни одна из ваших функций не правильна. Рассмотрю только последнюю, "исправленную" версию от boostcoder (варианты от borisbn, как минимум страдают тем же самым) Итак
Программа ищет подстроку "А" в заданной строке. Вроде бы все ок, не так ли? Но давайте внимательно посмотрим, что происходит. hex представление буквы А в utf8 :
Теперь рассмотрим строку в которой происходит поиск. Допустим она состоит из двух букв "XY" Пусть на месте буквы Х находится любой символ с кодировкой:
а на месте буквы Y находится любой символ с кодировкой:
Соответственно, вся строка "XY", выглядит так:
Таких сочетаний, как вы понимаете 128*128= 16384 штук Отправляем одну из таких строк "XY" на поиск в ней русской 'А', и о чудо!, в троке "XY" оказывается присутствует 'A'! Тут можно возразить что строки "XY" никогда не встретятся. А вы точно сможете дать гарантию, что ни один из 16384 вариантов, никогда не встретится ? Это одни из тех багов, которые сидят в программах вечно, и когда-нибудь, по законам Мерфи в момент когда смогут нанести максимальный ущерб, они сработают. И вся беда в том, что такая ошибка не ловится. Она просто не воспроизводится у программиста. И он матерится на "долбанных юзеров", у которых баги, неизвестно откуда.. Напомю, здесь мы рассмотрели только самый невинный вариант - Поиск символа в константной строке. Варианты с форматированием винчестера, на отрицательный ответ юзера, оставляю на вашу фантазию... Аболютно универсальный ответ, на любое сомнитльное решение. ![]() Это сообщение отредактировал(а) volatile - 26.4.2012, 00:30 |
||||||||||
|
|||||||||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
слишком много букаф %)
воспроизведи то о чем говоришь, в примере. |
|||
|
||||
volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
boostcoder, В принципе хоть букв и много, смысл там простой. Может найтись случайное сочетание, которое даст ложное срабатывание. |
||||
|
|||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Ладно, ребята. убеждать не буду, больше.
Используйте utf8 В принципе mes, провильно сказал. Просто я много раз видел, когда например под отведенные три символа английских, поверх писали 3 символа русских. Щас просто, не приходят в голову все варианты багов которые я видел. Дай бог чтоб у вас такого никогда не было. |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
остается гадать...
|
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
volatile, только не подумайте, что я защищаю utf-8 в программах. Я как раз противник этой недокодировки (кроме передачи данных) и нигде в исходниках её не использую.
Однако, Вы неправы насчёт того, что комбинация, похожая на 'А' может появиться из двух половинок двух символов. Дело в том, что любая русская буква состоит из двух таких байт
и ситуации быть не может в принципе. источник -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
alexvs11 |
|
|||
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: 6 Всего: 10 |
borisbn, зато ничто не мешает найти русскую букву внутри трех-байтного или четырехбайтного символа
подал иероглиф на вход - нашел в нем русскую а - нонсенс |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
alexvs11, нет. Вот таблица из той статьи, на которую я ссылался
![]() см. внимательно... не может быть -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
alexvs11 |
|
|||
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: 6 Всего: 10 |
borisbn, да действительно, вроде как нельзя
|
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
потому я и попросил volatile воспроизвести ошибку, ибо знаю, что того что он описал, не может быть.
но ему, вместо нескольких строк кода, оказалось проще написать 29 строк букаф. а над этим уже стОит задуматься... |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
более того, utf8 обладает еще одним чудесным свойством.. если пропадет один любой байт, пропадет/испортится только один символ, все остальное останется в порядке ![]() |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
прекрасное свойство для передачи данных без подтверждения по плохому каналу. Писать же исходники на utf-8 или работать с такими строками при помощи std::string - IMHO неразумно -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
а если utf8 родная кодировка оси ? что нужно специально устанавливать какую то другую ? тем более если в пределах одной программы используются несколько нац языков, и требуется лишь хранение и вывод таких строк, при этом память желательно не растрачивать ? |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
страшно жить! ![]() Добавлено через 4 минуты и 1 секунду дело даже не в том, родная или нет. дело в том, что UTF-8 - стандарт, который поддерживают абсолютно все *nix ОСи. borisbn, так вот ответь: что для меня будет важнее, подстраивание под одну ОС, в которой я даже не работаю, или подстраивание под все остальные? при том, что я без каких либо сложностей с кодировкой, любые свои коды соберу и для вендус? ;) |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
сочувствую
то же
Что важнее для тебя - не знаю. Для меня важно какая ОС установлена на компьютере пользователя моего софта, а не на моём. К счастью, для меня эти две ОСи совпадают, а что творится на остальных 4-х %-тах ОСей - не очень интересно. mes, boostcoder, вы - профессионалы, и давать вам какие-то советы - дело неблагодарное. Я же (и как я понял volatile) хочу предостеречь от ошибок новичков, а при работе с utf-8 без большого опыта и понимания этой кодировки они (ошибки) практически неизбежны. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
ох и толсто ![]()
разумеется *nix. хз о каких ошибках ты говоришь(об ошибках в понимании?), но при использовании этого, вся STL поддерживает utf-8. Добавлено через 8 минут и 14 секунд к тому же, как я неоднократно писал, я считаю неразумным писать одноразовый код. Это сообщение отредактировал(а) boostcoder - 26.4.2012, 13:19 |
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
вот это действительно кошмар.. то есть чтоб переделать под другую кодировку, надо фактически переделать всю программу ? и да, если вдруг пишете вместе с французом кто чью кодировку должен принять ? Добавлено через 53 секунды я пока любитель ![]() Добавлено через 2 минуты и 37 секунд
внушить страхи перед кодировками и оставить их у разбитого корыта когда им придется работать в одной проге больше , чем с одной кодировкой ?! |
||||
|
|||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ошибки неизбежны при использовании нац символов независимо от кодировки.. можно конечно поставить жесткие рамки и принудительно выставить исходники и вывод в одну кодировку.. Вполне за такое решение, когда (пусть неявно) подчеркивается нужность подобного подхода.. В охтальных случаях я за правильность расставления акцентов ![]() |
|||
|
||||
borisbn |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Нет, конечно. У меня для этого есть такой же костыль, как и а именно QString + QTextCodec ![]()
IMHO that's obvious, that I wouldn't use Russian, and Frenchman wouldn't use French ![]() Как вам кажется, логично ли предположить, что такой код
должен вывести 'р' ? Только честно. По логике, а не по знанию ада с кодировками и всё, что с ним связано... Кстати, на LWS этот код вообще ничего не выводит ![]() Добавлено через 5 минут и 30 секунд
Заменить, что-ли, своих женщин/программистов + чары/стринги на это ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||||
|
|||||||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
пойдем дальше : логично ли предположить
что вывод этого кода будет Привет ? однако ж практика (в том числе и куча вопросов почему у меня кракозябры вместо текста) утверждают обратное ![]() ![]() Добавлено @ 14:51 если говорить по логику , то для меня строчка, по вывода введенного пользователем текста :
хоть и логична, но внушает (справедливые) опасения ![]() так что на чистой логике в программированнии далеко не уедишь ![]() Это сообщение отредактировал(а) mes - 26.4.2012, 14:54 |
||||
|
|||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
html ? ну... именно в QLabel он не страшен. XSS там не пройдёт))) -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
страшен ли - это другой вопрос ) но поведение может быть не очень ожидаемое..так же как и str.at(1) ![]() |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
borisbn, признаюсь, я привел не удачный пример. Хотел максимально простой и наглядный. Придумал, так на лету, но .. ступил признаюсь! ![]() При правильной строке действительно невозможно такое состояние. Но тем не менее, смысл не в этом примере. Кодировка utf8, э... как бы это сказать... глюкабельная. т.е. предрасполагающая к багам. Очень часто видел в программах, ошибки приводящие к нестабильности. Не хочу щас копаться выискивать какие-то примеры. Достаточно того, что в слове "привет", все-ж таки 6 букв, а не 12 ![]() Тем более, что похоже это начинает затрагивать чьи-то религиозныее чувства. А там где начинается фанатизм, кончается логика. Это сообщение отредактировал(а) volatile - 26.4.2012, 23:44 |
|||
|
||||
baldina |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
мнение понятно, но не обоснованно
я тоже. только причем тут utf? ошибки в программах вообще склонны приводить к нестабильности
c utf неудобно работать при помощи char (std::string), да, но - не опасно. к тому же есть библиотеки, utfcpp например так что религия тут непричем) |
||||||
|
|||||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
т.е. тот факт, что utf8 самая удобная кодировка(имхо) - религиозные чувства? Это сообщение отредактировал(а) boostcoder - 27.4.2012, 00:32 |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Блин.., из-за того что вчера тупанул, даже спал плохо..
Ночью снились utf символы, и другие кошмары ![]() Стоит только добавить, что мое замечание, означает лишь что над строкой не выполнялись, например, никакие стандартные алгоритмы. Иначе на вопрос
можно привести реальный пример:
http://codepad.org/aQMdC3ag boostcoder, lws почему-то у меня щас не открылась Это сообщение отредактировал(а) volatile - 27.4.2012, 06:58 |
||||
|
|||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
ну... я не верю, что можно случайно отсортировать utf`ную строку)) к тому же(специально по этому случаю, добавил на LWS utfcpp):
http://liveworkspace.org/code/492f72f74fa9...5201b674ba97c4d да, сервер вчера обновлял. Добавлено через 1 минуту и 52 секунды дока, если вдруг кто захочет поэкспериментировать. |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Не только отсортировать. Практически любой стандартный алгоритм может привести к краху. Да не только алгоритм, обыный доступ к символу str[n] = 'А', это самоубийство; Нужно постоянно помнить об этом.
Не верю просто что это можно назвать самой удобной кодировкой, иначе как не под религиозным порывом. ![]() Не думал что это выльется в холивар. (В конечно счете, как я понимаю win vs nix). Боже упаси, не хочу в этом участвовать. ![]() Между прочим уважаю линуксоидов. В никсах действительно очень и очень много что гораздо лучше, сделано чем в венде. И венда по общему (суммарному) безусловно проигрывает. Но есть вещи, которые в венде лучше, их не много, но они есть. Между прочим, недавно дженту поставил в качестве альтернативки. Неплохоая штуковина, п...хаться правда пришлось, но щас вроде все ок. ![]() |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
просто нужно приучать себя к пониманию того, что строка - не контейнер чаров, а контейнер некоторых единиц интерпретируемых как символы. и все. никаких косых действий в этом случае не случится. |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
В том то все и дело, что об этом почти никто не вспоминает. Зачем далеко ходить, даже на этом форуме, почти любая программа которую пишут для новичков, (и не только для новичков), грешит этим. Вспоминаю такие темы как "определить что это полиндром", "найти максимальное по длине слово в предложении", и так далее..., здесь таких тем очень много. Любая из этих программ при вводе русских символов отправит комп в "нирвану", (или в самом лучшем случае просто даст не верный результат). А кто запретит ввести русские символы? |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
||||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Я бы так сформулировал: строку в utf-8 в std::string можно ТОЛЬКО хранить. Никаких операций с ней делать нельзя. Взять хотя бы reverse_iterator... Кстати... с rbegin() и эта библиотечка не спасёт:
С utf-8 в Си++ становится как в интернетах - всё, что вводит пользователь - обязательно "анэскейпить". В нашем случае - переводить либо в свою однобайтовую кодировку, либо в utf-16, а уж затем работать с такой строкой... -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
ну не знаю... помоему вы все слишком драматизируете..
|
|||
|
||||
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 |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |