Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> макрос/функция Isalpha (ctype.h) 
V
    Опции темы
Quanzi
Дата 25.12.2006, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 22.12.2006

Репутация: нет
Всего: нет



Нужно заставить этот макрос понимать русский. Я собственно знаю, как это сделать теоретически, но есть ли у кого-нибудь уже готовое?
А то писать проверки для всех кодировок не хочется...
 smile 

<locale> не подошло, ибо невозможно его использовать с кодом в С.
Что-то аналогичное для С есть?
Компилятор - Visual Studio 6.

Это сообщение отредактировал(а) Quanzi - 25.12.2006, 16:57
PM MAIL   Вверх
witex
Дата 25.12.2006, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 16.10.2006
Где: Эстония

Репутация: 1
Всего: 4



можно попробываться вначале перевести CharToOem а потом уже проверять через IsAlpha проверять!
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
Earnest
Дата 25.12.2006, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



setlocale из <locale.h> - это C.


--------------------
...
PM   Вверх
Quanzi
Дата 25.12.2006, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 22.12.2006

Репутация: нет
Всего: нет



Цитата(Earnest @ 25.12.2006,  19:04)
setlocale из <locale.h> - это C.

Можно пример?
Просто сижу тыкаюсь... может и доберусь до того, как делать, но боюсь нескоро  smile 

c:\program files\microsoft visual studio\vc98\include\eh.h(32) : fatal error C1189: #error :  "eh.h is only for C++!" - вот что выдает вообще файл <locale>... <clocale> такого не выдает.

Так... как подключить и создать локаль - понял. Методом профессора Тыка.
Теперь непонятно - на 
Код

isalpha(*argument,locale)
 мне выдается d:\circle-3.1\src\interpreter.c(1135) : warning C4002: too many actual parameters for macro 'isalpha'...
Я понимаю, что надо где-то найти функцию с двумя параметрами, но ГДЕ?
Пример, плз  smile 

Это сообщение отредактировал(а) Quanzi - 25.12.2006, 23:28
PM MAIL   Вверх
Earnest
Дата 26.12.2006, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Ты перепутал локали из стандартной библиотеки C++ и СRT. Они действительно похожи, но не совсем: в CRT есть только одна общая локаль, которую нужно установить функцией setlocale. Подключать надо <locale.h>, а не <locale>. Последняя - это как раз c++.
Сначала вызови setlocale, чтобы установить нужную локаль, потом используй макрос isalpha, который имеет только один аргумент - проверяемый символ.
Примера, извини, под рукой нет.


--------------------
...
PM   Вверх
Quanzi
Дата 26.12.2006, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 22.12.2006

Репутация: нет
Всего: нет



Благодарю.
А какая локаль русская? .866?
или russian_russian?
Название интересует, ибо не знаю smile
PM MAIL   Вверх
Earnest
Дата 26.12.2006, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



В зависимости от кодировки: если Windows, то russian. И еще, второй аргумент можно поставить LC_ALL, конечно, но тогда и другие региональные настройки (вывод даты, дес. точка и прочее изменятся, что, по-моему, не очень удобно). Но можно тпоставить олько специфический, для сравнения строк, LC_COLLATE, кажется.



--------------------
...
PM   Вверх
Quanzi
Дата 26.12.2006, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 22.12.2006

Репутация: нет
Всего: нет



Спасибо... 
Нда... понял, почему в каком-то из прошлых постов писали про траблы с символами. Локаль меняет кодировку - и Си начинает вызывать вместо 'ъ', например, всякие спецсимволы. Буду думать как починить...


Это сообщение отредактировал(а) Quanzi - 26.12.2006, 09:25
PM MAIL   Вверх
Quanzi
Дата 26.12.2006, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 22.12.2006

Репутация: нет
Всего: нет



Методом Тыка - для русских символов в Си нормально работает setlocale(LC_ALL,".866").
Проблема осталась другая, перенесу в другой топик...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.