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;
}
}
}
Как выяснить, является ли текст идентификатором?
идентификатором. Нужно решить на С++.(не Visual и не Builder)
[/SIZE][/FONT]
Цитата:
[FONT=Arial Narrow]выяснить, является ли этот текст: идентификатором
[/FONT]
всё зависит, что подрузумевается под словом идентификатор и текст. если тебе надо проверить строку, может ли она быть именем переменной(например), тогда тебе надо проверить что первый символ строки не является запрещенным символом(цифра, пробел...), и также, что в строке нет пробелов и т.д.(запрещенныx символов) - зависит от правил, которые вам задали.
Код:
Код:
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;
}
}
"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;
}
}
Код:
#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;
...
// функция проверки
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;
...