|
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
|
||||||
Функция size() стандартного класса string31.08.2012, 10:20. Показов 22039. Ответов 42
Метки нет (Все метки)
Добрый день. При поптыке посчитать количество символов в введённой строке на латыне - отображает верный результат, а кириллицу читает неправильно. Компилятор GNU C++. В чём может быть дело и как исправить эту ошибку?
Если ввести: Привет Мир! Результат будет 20
0
|
||||||
| 31.08.2012, 10:20 | |
|
Ответы с готовыми решениями:
42
Выход из цикла методом size() класса string Функция ввода для класса string
|
| 31.08.2012, 10:27 | |
|
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 31.08.2012, 10:34 | |
|
Два компилятора (MSVC и mingv) выдают одинаково: 12, 11.
0
|
|
|
|
|
| 31.08.2012, 10:42 | |
|
Dani, человек спросил почему Hello world имеет длину 12 а Привет мир имеет 20, а не как руссифицировать приложение
![]() xtorne21st, ответ прост "Привет мир" состоит из 10 символов кирилицы (TCHAR) которые имеют размер 2 байта. Также хочу добавить что size(размер строки в байтах) и length(длина строки - число символов в ней) это два разных метода (хотя на char-ах они одинаковый результат дают)
2
|
|
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
| 31.08.2012, 10:43 | |
|
-=ЮрА=-, какой TCHAR в GNU C++ ??
0
|
|
|
|
|||||||||
| 31.08.2012, 10:45 | |||||||||
|
Добавлено через 5 минут
http://liveworkspace.org/code/... 6acdb0bb99 Код
Отработка
0
|
|||||||||
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
| 31.08.2012, 10:45 | |
|
CheshireCat, ну он имел просто "широкие" (wide) символы, чего придираться то?
0
|
|
| 31.08.2012, 10:51 | ||||||
|
Не по теме: CheshireCat, я поправлюсь
0
|
||||||
|
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
|
|||
| 31.08.2012, 10:56 [ТС] | |||
|
Добавлено через 4 минуты
0
|
|||
|
|
|
| 31.08.2012, 10:57 | |
|
1
|
|
|
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
|
||
| 31.08.2012, 11:13 [ТС] | ||
|
Добавлено через 6 минут Всем спасибо. Ответ нашёл здесь: http://ru.wikipedia.org/wiki/Кириллица_в_Юникоде
0
|
||
|
|
||||
| 31.08.2012, 11:22 | ||||
|
xtorne21st, там сказано что размер wchar_t определяется компилятором и может быть равен 8 битам (как у обычного символа). По увиденным мною отработкам заключаю, что GNU отводит под него 2 байта(я использую MSVS у которого "привет мир!" выдаёт 11 символов и об особенностях GNU могу лишь догадываться по тому что вижу на форуме)
Не выхватывайте отдельные фразы из контекста тогда будет понятней Добавлено через 4 минуты Не по теме: Хммм вижу что с length и szie дал маху и спутал с чем то другим
0
|
||||
| 31.08.2012, 11:37 | ||
|
Не по теме: -=ЮрА=-,
0
|
||
| 31.08.2012, 11:43 | |
|
Не по теме: alsav22, liveworkspace.org
1
|
|
| 31.08.2012, 12:16 | |
|
1
|
|
|
7 / 7 / 2
Регистрация: 12.08.2012
Сообщений: 96
|
|
| 31.08.2012, 22:47 | |
|
Хм...а у меня всё работает
0
|
|
|
7 / 7 / 2
Регистрация: 12.08.2012
Сообщений: 96
|
|
| 31.08.2012, 23:05 | |
|
(Правильно работает), правильно отображает кол-во символов.
0
|
|
|
|
||||
| 01.09.2012, 10:01 | ||||
|
На счёт правиьности - вот вам два онлайн компилятора (на которые полфорума ровняется) liveworkspace.org codpad.org скопипастте туда этот код http://liveworkspace.org/code/... 6acdb0bb99 И поймите в чём проблемма (те онлайн компиляторы как бы эталон, тобишь если у вас работает по другому значит немного не по стандарту, если же вы пишите как и я в MSVS то привыкайте что в вас будут швырять камни и помидоры здесь на форуме, т.к. местный народ не хочет признавать студию как одну из лучших сред разработки приложений с высокоуровневым интерфейсом) На счёт слов Надесь теперь вы понмаете что правильно (тобишь работает у меня) совсем не значит что в компиляторе блюдущему стандарт оно работает также(в этом то и была проблемма, а не в том работает/не работает ли код)
0
|
||||
|
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
||
| 01.09.2012, 11:10 | ||
|
Во-вторых, в твоём примере wchar_t вообще не используется, а используется обычный char. А длина 20 получается из-за того, что строки представлены в кодировке UTF-8 с переменной длинной символов. Дальше угадал — кириллица представляется 2 байтами, ASCII символы одним. Если бы использовался wchar_t, то размер строки L"Привет мир!" был бы равен 10 (не считая нулевого символа в конце).
0
|
||
| 01.09.2012, 11:10 | |
|
Помогаю со студенческими работами здесь
20
Приведение типов string.size() к (void*) Корректно ли? string nonVowel = new char[str.size()]; String.size() длина русского слова в 2 раза больше, чем английского override функции стандартного класса
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|