Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как выяснить, является ли текст идентификатором?

17K
04 февраля 2007 года
S_A_M
10 / / 27.01.2007
[FONT="Arial Narrow"][SIZE="2"]Дан текст; выяснить, является ли этот текст:
идентификатором. Нужно решить на С++.(не Visual и не Builder)
[/SIZE][/FONT]
242
04 февраля 2007 года
Оlga
2.2K / / 04.02.2006
Цитата:
[FONT=Arial Narrow]выяснить, является ли этот текст: идентификатором

[/FONT]
всё зависит, что подрузумевается под словом идентификатор и текст. если тебе надо проверить строку, может ли она быть именем переменной(например), тогда тебе надо проверить что первый символ строки не является запрещенным символом(цифра, пробел...), и также, что в строке нет пробелов и т.д.(запрещенныx символов) - зависит от правил, которые вам задали.

11K
04 февраля 2007 года
.nornad
125 / / 04.01.2007
Для проверки строки на то, что она может использоваться в качестве идентификатора по правилам с++:
Код:
char *str; // значение не важно откуда. например, с консоли

int len = strlen( str );
bool isIdenifier = true;
if ( 0 >= len || (('A' >= str[0] || 'Z' <= str[0]) && ('a' >= str[0] || 'z' <= str[0]) && '_' != str[0]) )
{
    isIdentifier = false;
}
else
{
    for( int i = 1; i < len; ++i )
    {
        if ( (('A' >= str || 'Z' <= str) && ('a' >= str || 'z' <= str) && '_' != str) && ('0' >= str || '9' <= str) )
        {
            isIdentifier = false;
            i = len;
        }
    }
}
Для проверки строки на то, что она является именем идентификатора в текущей программе:
Код:
char **identifiers = {
    "my_var_1",
    "my_var_2",
    "identifiers",
    "len",
    "str",
    "isIdentifier",
    "i"
};
int len = 7;

char *str;
bool isIdentifier = false;

for( int i =0; i < len; ++i )
{
    if ( 0 == strcmp( identifiers, str ) )
    {
        isIdentifier = true;
        i = len;
    }
}
9
05 февраля 2007 года
Lerkin
3.0K / / 25.03.2003
То же, что и у .nornad, только оформлено в виде функции:

Код:
#define FCC(a) (a >= 'A' && a <= 'Z') || (a >= 'a' && a <= 'z') || (a == '_')

// функция проверки
bool idcheck( char* tok )
{
    char* ptr = tok;
    if( !(FCC(*ptr)) )  // проверка первого символа
    return false;

    while( *(++ptr) )   // проверка остальных символов
    if( !( FCC(*ptr) || (*ptr >= '0' && *ptr <= '9') ) )
        return false;

    return true;
}

// пример использования
...
    bool tok;
    tok = idcheck("correct_id"); // tok = true
    tok = idcheck("$incorrect_id"); // tok = false;
...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог