![]() |
|
Модераторы: bsa |
![]()
|
|
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
ну так wstring уже есть Добавлено через 1 минуту и 9 секунд на крайней случай есть еше std::basic_string Добавлено через 4 минуты и 49 секунд
если делаете для опыта, то посмотрите как решено в уже упомянутой utfcpp, а если для дела, то лучше отказаться от велосипеда, тем более при таком уровне вопросов.. Добавлено через 7 минут и 53 секунды а за свой код Вы уверенны, что он скомпилируется ? а если сторонняя библиотечка маленькая и аккуратная в ней к томуже можно легко поправить, как и в своем коде.. |
|||
|
||||
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
mes
По идее, да, но чего же класс-то таким разным получился, что на разных операционных системах представляется по-разному? С wstring ещё больше гемора, чем с UTFфным std::string Это сообщение отредактировал(а) Proger10 - 2.6.2013, 14:03 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
проблема не в wstring, а в базовом wchar`е.. используйте basic_string с нужным типом кирпича для вашей стены.. Вы сейчас сравниваете теплое с мягким... (w)string это всего лишь контейнер для хранения. А utf-8 это формат хранения текста в контейнере.. Недостаток utf-8 в переменной длине символа и в этом же ее преимушество. При этом хранить его можно как в string так и в wstring. Только при хранении в однобайтовом контейнере границы символа. В многобайтовой же строке для каждого символа есть свое место. Естественно при переносе текста между форматами хранения нужен конвертер. Добавлено через 5 минут и 1 секунду
опять же высказывание показывает непонимание происходящего и подмена обстоятельств.. |
|||
|
||||
| kolesnle |
|
|||
![]() Упертый сишник ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 22.3.2013 Репутация: нет Всего: нет |
||||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Proger10, кончай заниматься велосипедоизобретательством. Есть такая вещь в С++ называется locale. У всех потоков есть getloc и imbue, которые позволяют задать локаль. С ее помощью, можно сделать автоматическую конвертацию читаемые/записываемых данных между UTF-8 и wstring. Под линуксом это работает без проблем.
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
а затем функцию length(), возвращающую количество символов (не байт) в строке Это сообщение отредактировал(а) borisbn - 12.6.2013, 10:41 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
borisbn, ну кол-во символов теоретически можно написать,
а вот оператор [], написать нельзя, даже теоретически.
Добавлено через 6 минут и 17 секунд причем это первое что ТС собирался сделать из не так многого:
|
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
можно, если этот оператор будет оперировать не байтом |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
причем сложность будет линейная.
|
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Естественно если писать wstring, то можно. Но там по условию ТС хранит UTF8 строку. оператор[] должен вернуть неконстантую ссылку, на символ из этой строки. хорошо, скажем мягче. я не знаю как писать такой оператор. Добавлено через 12 минут и 29 секунд Разве что с привлечение каких-то временных объектов... и постоянным конвертированием UTF8<->UTF16/32. но заставить такое глюкало корректно работать во всех режимах, врядли получицца... |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
ага, возвращением прокси объекта как будет свободное время напишу примерчик НИ о какой конвертации кодировок тут речи нет ! возможно из за путаницы понятий, подразумевается конвертация в многобайтовый контейнер ? да для внутреннего пользования можно и так хранить.. а можно динамично искать ну#ный порядковый номер, но тогда а в первом варианте нет.. |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Не из-за путаницы понятий Да именно это я и имел ввиду. mes, примерчик-то написать можно. Сложность там будет в том чтобы А заставлять вас писать полный вариант - мне абсолютно не удобно. Работа большая и очень не благодарная. Это сообщение отредактировал(а) volatile - 16.6.2013, 00:21 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
позвольте узнать в чем глюкало ? разбить строку на символы ?! |
|||
|
||||
| mes |
|
||||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
чего то хорошей идеи для примера не пришло, вот накалякал пример прокси на скорую руку :
|
||||||||
|
|||||||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
> proxy((int*)&at(idx));
С русскими буквами в utf-8 работать не будет. Вернее, поведение будет отличаться от предполагаемого. Например, я бы хотел, чтобы в строке "привет мир" символ с индексом 3 был бы 'в' -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |