Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2009, 02:08   #1
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию Преобразование символов в цифры

Здравствуйте. Как можно получить напрямую символ, который был введен по средством клавиатуры? Получаю данные через WM_KEYDOWN: symbol=wParam;

можно получать данные в виде чисел, если symbol это int, или саму букву, если это char и если нажатая клавиша имеет ввиду букву... но в этом случае проблема... буквы в верхнем регистре... можно конечно проверку осуществить на капс лок или шифт, и отменять верхний регистр (как это сделать - не знаю)... но тогда каким образом получить прочие символы, т.е запятые, кавычки, скобки и значки? не говоря уже о русских буквах... тогда наверное стоит получать циферные данные ... но как тогда преобразовать эту цифру в букву? Есть конечно идеи... но хочется узнать, существутю ли какие либо стандартные способы на С/С++, не зависимые от платформы, что бы можно было через WM_KEYDOWN получать сами символы, может быть даже с учетом шифта... если клавиша "1" это цифра 1, а с шифтом будет "!", или если раскладка русская, то при нажатии клавиши "А" получается русская буква "ы"... конечно я могу приступить к написанию собщственного преобразования... проверять получаемую цифру и делать символ... типа if (wParam == 'A') {symbol="a";} можно еще делать проверку, если нажат шифт, то symbol="A"; но собственно таких строк проверок будет более 100

Подскажите пожалуйста. Заранее благодарю.
Артэс вне форума Ответить с цитированием
Старый 29.12.2009, 02:13   #2
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

ммммм... есть пару функций, для того чтобы узнать что введено
Код:
isalnum
isalpha
isdigit
isgraph
islower
isprint
ispunct
isspace
isupper
isxdigit
Olejik вне форума Ответить с цитированием
Старый 29.12.2009, 02:21   #3
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

ну я не совсем это имел ввиду. Может быть есть какие-либо автоматические проверки... например если зажать шифт и 1, то получить !... вместо расписания проверок, если была зажата клавиша шифт... если еще нажата клавиша "1", то символ будет !... или если раскладка русская, и при нажатии на клавишу "А", будет получена буква "ы", вместо опять написания этих проверок if (wParam == 'A'){symbol="ы";} и так для всех букв... просто побольшому счету интересует, есть ли стандартная функция, или нужно все эти проверки самому писать?
Артэс вне форума Ответить с цитированием
Старый 29.12.2009, 02:24   #4
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

есть стандартная функция, видел пример как узнать, включен ли capslock, там какой то сайт прикольный, через API функции вроде это делается, но забыл (
Olejik вне форума Ответить с цитированием
Старый 29.12.2009, 02:40   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Первое

Второе
я думаю нужно именно второе.
особо присмотрите к случаю второго параметра в MAPVK_VK_TO_CHAR(2)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.12.2009, 03:36   #6
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Спасибо. Дополнительно поискав, нашел в интернете функцию ToAsciiEx(); в которой указывается клавиша, статус языка (GetKeyboardLayout), статус и прочее... после эксперементов, вроди бы работает. Хороша ли эта функция, и нет у нее минусов при использовании?
Артэс вне форума Ответить с цитированием
Старый 29.12.2009, 03:59   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
статус языка (GetKeyboardLayout),
последний параметр
Цитата:
dwhkl

Identifies the keyboard layout to use to translate the given code. This parameter can be any keyboard layout handle previously returned by the LoadKeyboardLayout function.
если она вам подходит, то используйте на здоровье
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.12.2009, 04:11   #8
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Что ж, спасибо еще раз! И еще хотелось бы узнать... теперь я получаю готовый символ в переменной, но какой функцией я могу этот символ преобразовать в числовое значение? Ведь у каждого символа есть свое числовое значение ... их вроди бы 256 ?
Артэс вне форума Ответить с цитированием
Старый 29.12.2009, 04:19   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вам нужно вывести число как строку?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.12.2009, 04:20   #10
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

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

Последний раз редактировалось Артэс; 29.12.2009 в 04:26.
Артэс вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
преобразование в цифры Артэс Общие вопросы C/C++ 8 23.11.2009 02:30
Дана строка символов. Удалить из исходной строки все цифры. Striker14 Помощь студентам 4 26.02.2009 15:50
Дана строка символов. Задача: удалить из строки все цифры. Striker14 Помощь студентам 1 25.02.2009 20:23
Преобразование символов в строке ZeroQl Помощь студентам 12 17.02.2009 23:06