Вот код, который я использую его, чтобы проверить key
не является ли номер:ISALPHA всегда возвращает 0
string key;
cin>>key;
if(isalpha(atoi(key.c_str())) == 0)
{
//do something
}
else
//do something else
Независимо от того, что я вход, isalpha
всегда == 0
. Я пробовал рассматривать его как логическое, используя if(isalpha(atoi(key.c_str())))
, но он делает то же самое.
Ключ должен быть int
, но cin.fail()
и !(cin>>key)
также не работал.
Что вы пытаетесь достичь? 'isalpha' проверяет char ... вы преобразуете строку в int и затем проверяете int по какой-то нечетной причине. – David
@OliCharlesworth Я использую его, чтобы проверить, есть ли что-то. Это предотвращает ошибки. – SemicolonExpected
@ArcaneExplosion, что-то вроде 'try {std :: stoi (key);} catch (IForgetWhichException) {// not number}' будет работать. Кроме того, 'boost :: lexical_cast' также генерирует исключение для плохого преобразования, а' strtol' предоставит информацию об ошибке. – chris