Форум программистов, компьютерный форум CyberForum.ru

Какой есть аналог isalpha для работы с русским алфавитом? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
supra7sky
 Аватар для supra7sky
15 / 15 / 1
Регистрация: 07.02.2013
Сообщений: 123
20.05.2013, 21:36     Какой есть аналог isalpha для работы с русским алфавитом? #1
Использую string и нужно проверять записан ли внутри текст или число. Какими средствами можно это сделать? Обычный isalpha(str.c_str()[0]) выдает ошибку когда русский.
- В string-e большой функционал. Где можно про него почитать, о всех его методах? (желательно на русском)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2013, 21:36     Какой есть аналог isalpha для работы с русским алфавитом?
Посмотрите здесь:

Есть ли в с++ какой-нибудь аналог in C++
шифр Цезаря с русским алфавитом C++
C++ Какой проект открыть для работы с файлом или БД?
Есть ли аналог isalpha, только для string C++
C++ аналог функции isalpha() (<cctype>)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
20.05.2013, 21:55     Какой есть аналог isalpha для работы с русским алфавитом? #2
Есть такая версия isalpha.
Ну либо ручками написать.
SummerRain
 Аватар для SummerRain
325 / 324 / 17
Регистрация: 16.12.2012
Сообщений: 544
20.05.2013, 22:00     Какой есть аналог isalpha для работы с русским алфавитом? #3
можно и самому написать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
bool isalpha_rus(char c) {
    return c >= 'а' && c <= 'я' || c >= 'А' && c <= 'Я'
        || c == 'ё' || c == 'Ё'; // если надо включаем букву ё
}
 
int main() {
    setlocale(0, "");
    char arr[] = "Ля-ля-ля-ля-ля-ля танцуют звёзды и луна";
    int i = 0;
    while (arr[i]) {
        if (isalpha_rus(arr[i]))
            std::cout << "Это русская буква " << arr[i] << std::endl;
        ++i;
    }
    system("PAUSE>0");
    return 0;
}
в браузере есть переводчик.
Если хочешь заниматься программированием, то без английского никак.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
20.05.2013, 22:16     Какой есть аналог isalpha для работы с русским алфавитом? #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cstring>
 
int main() {
    setlocale(0, "");
    char arr[] = "Ля-ля-ля-ля-ля-ля танцуют звёзды и луна";
    int i = 0;
    while (arr[i]) {
        if (isalpha((unsigned char)arr[i]))
            std::cout << "Это русская буква " << arr[i] << std::endl;
        ++i;
    }
    system("PAUSE>0");
    return 0;
}
007imran007
1 / 1 / 0
Регистрация: 08.07.2012
Сообщений: 83
08.06.2014, 20:09     Какой есть аналог isalpha для работы с русским алфавитом? #5
Цитата Сообщение от SummerRain Посмотреть сообщение
можно и самому написать
Код C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
bool isalpha_rus(char c) {
* * return c >= 'а' && c <= 'я' || c >= 'А' && c <= 'Я'
* * * * || c == 'ё' || c == 'Ё'; // если надо включаем букву ё
}
int main() {
* * setlocale(0, "");
* * char arr[] = "Ля-ля-ля-ля-ля-ля танцуют звёзды и луна";
* * int i = 0;
* * while (arr[i]) {
* * * * if (isalpha_rus(arr[i]))
* * * * * * std::cout << "Это русская буква " << arr[i] << std::endl;
* * * * ++i;
* * }
* * system("PAUSE>0");
* * return 0;
}
в браузере есть переводчик.
Если хочешь заниматься программированием, то без английского никак.
можно поинтересоваться как именно это работает? программа не распознает букву, а лишь возвращает введеное значение или как еще, ведь у нее для проверки есть только ASCII-таблица и пробежаться 'а'-'я' она не может, как я понял. Сори за нубский вопрос...
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
08.06.2014, 21:00     Какой есть аналог isalpha для работы с русским алфавитом? #6
Цитата Сообщение от supra7sky Посмотреть сообщение
Использую string и нужно проверять записан ли внутри текст или число. Какими средствами можно это сделать? Обычный isalpha(str.c_str()[0]) выдает ошибку когда русский.
- В string-e большой функционал. Где можно про него почитать, о всех его методах? (желательно на русском)
Есть еще isdigit
Yandex
Объявления
08.06.2014, 21:00     Какой есть аналог isalpha для работы с русским алфавитом?
Ответ Создать тему
Опции темы

Текущее время: 05:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru