15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 190
|
||||||
1 | ||||||
Функция strlen() на русской раскладке считает один символ за 210.05.2016, 14:45. Показов 7399. Ответов 15
Метки нет (Все метки)
Объясните пожалуйста почему функция "strlen()" считает очень странным образом
пишешь Английскими буквами считает правильно, перехожу на Русский считает один символ за 2 почему это так?
0
|
10.05.2016, 14:45 | |
Ответы с готовыми решениями:
15
Назначить # вместо № в русской раскладке keyPressEvent() при русской раскладке Горячие клавиши в русской раскладке Имитация нажатия клавиш в русской раскладке |
156 / 143 / 62
Регистрация: 08.09.2014
Сообщений: 1,220
|
|
10.05.2016, 14:53 | 2 |
Строку в студию и результат
1
|
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 190
|
|
10.05.2016, 15:00 [ТС] | 3 |
Игорь1986,
0
|
58 / 55 / 28
Регистрация: 20.05.2015
Сообщений: 256
|
|
10.05.2016, 15:02 | 4 |
MRG_Serejka, По стандарту C++ всё работает нормально, у меня ваша программа работает; скорее всего дело в вашей среде программирования, которая, возможно, русский алфавит считает в кодировке Unicode, а английский по дефолту есть практически в любой, но вероятность этого мала.
1
|
156 / 143 / 62
Регистрация: 08.09.2014
Сообщений: 1,220
|
||||||
10.05.2016, 15:02 | 5 | |||||
А строку обнулять кто будет, или ты думал она сама по себе очиститься, просто такое ощущение что результат накапливается для этого введите русскую строку больше по длине и посмотрите, а потом попробую обнулить строку после вывода результата
1
|
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 190
|
|
10.05.2016, 15:06 [ТС] | 6 |
Игорь1986, не очень понял что вы хотели этим сказать.
0
|
156 / 143 / 62
Регистрация: 08.09.2014
Сообщений: 1,220
|
|
10.05.2016, 15:15 | 7 |
Запиши инициализацию строки как я написал и проверь
1
|
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 190
|
|
10.05.2016, 15:17 [ТС] | 8 |
Игорь1986, редактировал код результат такой же...
0
|
58 / 55 / 28
Регистрация: 20.05.2015
Сообщений: 256
|
|
10.05.2016, 15:21 | 9 |
MRG_Serejka, sudo apt-get install codeblocks в терминале и там проверьте, создав новый проект.
1
|
156 / 143 / 62
Регистрация: 08.09.2014
Сообщений: 1,220
|
||||||
10.05.2016, 15:22 | 10 | |||||
Ну тогда попробуй еще так после вывода запиши строку, если и так не прокатит то ждем спецов ubuntu
1
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
10.05.2016, 15:36 | 11 |
strlen считает количество байт до первого нуля.
https://ru.wikipedia.org/wiki/UTF-8
1
|
Вездепух
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,068
|
|
10.05.2016, 19:04 | 12 |
При чтении строки из
istream при помощи оператора >> , прочитанная строка будет завершена нулевым символом. Поэтому ничего тут заранее обнулять не надо.
1
|
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
|
||||||
10.05.2016, 19:50 | 13 | |||||
MRG_Serejka,
Линукс и юникод это синонимы Т.е. да, считывается и выводится все в юникоде.
1
|
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 190
|
|
10.05.2016, 21:10 [ТС] | 14 |
Nosey, т.е. дело все таки в Unicode ? из-за нее одна русская буква занимает 2 места ?
0
|
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
|
|
10.05.2016, 21:19 | 15 |
Да, utf8 используемая ubuntu, использует переменное количество байт.
Из приведенной выше ссылки на википедию: Диапазон символов Количество байт Русские символы попадают во второй диапазон. Т.е. кодируются двумя символами.
1
|
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
|
|
10.05.2016, 21:34 | 16 |
Используй wcin/wcout, wchar_t[] и wcslen().
1
|
10.05.2016, 21:34 | |
10.05.2016, 21:34 | |
Помогаю со студенческими работами здесь
16
VBA это миф или реальность в русской раскладке? Ubuntu 18.04 подсветка клавиатуры работает только на русской раскладке Как получить цифровой код нажатой клавиши в русской раскладке? После перехода с семёрки на десятку пропала возможность писать на русской раскладке ALT-коды Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |