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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 67, средняя оценка - 4.66
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
#1

Проверить, является ли введенное значение числом или нет - C++

28.03.2010, 18:14. Просмотров 10724. Ответов 6
Метки нет (Все метки)

Здрасти. как проверить число на то, является ли оно им или нет. Пробовал с помощью cin.good(), и с ней все проверяется кроме одного: если ввести строку, где первая цифра, то считается что введено число. (пример 2hrtjnrtj - число) а на самом деле это не число
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2010, 18:14     Проверить, является ли введенное значение числом или нет
Посмотрите здесь:
C++ Проверить, является ли введенное значение числом
Проверка является ли строка числом полностью числом или нет? C++
Проверить является ли введенное слово или число палиндромом C++
Строка: Проверить, является ли заданный символ буквой, числом или специальным символом? C++
C++ Проверка, является значение числом или символом
C++ Является ли введенное слово числом
C++ Проверить, является ли последовательность прогрессией или нет?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
28.03.2010, 19:02     Проверить, является ли введенное значение числом или нет #2
isdigit - является ли символ числом
isalpha - является ли символ буквой


А вообще, таких функций проверки куча:
isalnum, iswalnum, _isalnum_l, _iswalnum_l, _ismbcalnum, _ismbcalnum_l, _ismbcalpha, _ismbcalpha_, _ismbcdigit, _ismbcdigit_l
Alphanumeric

_ismbcalnum, _ismbcalnum_l, _ismbcalpha, _ismbcalpha_, _ismbcdigit, _ismbcdigit_l
Alphanumeric

isalpha, iswalpha, _isalpha_l, _iswalpha_l, _ismbcalnum, _ismbcalnum_l, _ismbcalpha, _ismbcalpha_, _ismbcdigit, _ismbcdigit_l
Alphabetic

__isascii, iswascii
ASCII

iscntrl, iswcntrl, _iscntrl_l, _iswcntrl_l
Control

__iscsym, __iswcsym, __iscsymf, __iswcsymf, _iscsym_l, _iswcsym_l, _iscsymf_l, _iswcsymf_l
Letter, underscore, or digit

__iscsym, __iswcsym, __iscsymf, __iswcsymf, _iscsym_l, _iswcsym_l, _iscsymf_l, _iswcsymf_l
Letter or underscore

isdigit, iswdigit, _isdigit_l, _iswdigit_l, _ismbcalnum, _ismbcalnum_l, _ismbcalpha, _ismbcalpha_, _ismbcdigit, _ismbcdigit_l
Decimal digit

isgraph, iswgraph, _isgraph_l, _iswgraph_l, _ismbcgraph, _ismbcgraph_l, _ismbcprint, _ismbcprint_l, _ismbcpunct, _ismbcpunct_l, _ismbcspace, _ismbcspace_l
Printable other than space

islower, iswlower, _islower_l, _iswlower_l, _ismbclower, _ismbclower_l, _ismbcupper, _ismbcupper_l
Lowercase

_ismbchira, _ismbchira_l, _ismbckata, _ismbckata_l
Hiragana

_ismbchira, _ismbchira_l, _ismbckata, _ismbckata_l
Katakana

_ismbclegal, _ismbclegal_l, _ismbcsymbol, _ismbcsymbol_l
Legal multibyte character

_ismbcl0, _ismbcl0_l, _ismbcl1, _ismbcl1_l, _ismbcl2, _ismbcl2_l
Japan-level 0 multibyte character

_ismbcl0, _ismbcl0_l, _ismbcl1, _ismbcl1_l, _ismbcl2, _ismbcl2_l
Japan-level 1 multibyte character

_ismbcl0, _ismbcl0_l, _ismbcl1, _ismbcl1_l, _ismbcl2, _ismbcl2_l
Japan-level 2 multibyte character

_ismbclegal, _ismbclegal_l, _ismbcsymbol, _ismbcsymbol_l
Non-alphanumeric multibyte character

isprint, iswprint, _isprint_l, _iswprint_l, _ismbcgraph, _ismbcgraph_l, _ismbcprint, _ismbcprint_l, _ismbcpunct, _ismbcpunct_l, _ismbcspace, _ismbcspace_l
Printable

ispunct, iswpunct, _ispunct_l, _iswpunct_l, _ismbcgraph, _ismbcgraph_l, _ismbcprint, _ismbcprint_l, _ismbcpunct, _ismbcpunct_l, _ismbcspace, _ismbcspace_l
Punctuation

isspace, iswspace, _isspace_l, _iswspace_l, _ismbcgraph, _ismbcgraph_l, _ismbcprint, _ismbcprint_l, _ismbcpunct, _ismbcpunct_l, _ismbcspace, _ismbcspace_l
White-space

Isupper, iswupper, _ismbclower, _ismbclower_l, _ismbcupper, _ismbcupper_l
Uppercase

_isctype, iswctype, _isctype_l, _iswctype_l
Property specified by desc argument

isxdigit, iswxdigit, _isxdigit_l, _iswxdigit_l
Hexadecimal digit

_mbclen, mblen, _mblen_l
Return length of valid multibyte character; result depends on LC_CTYPE category setting of current locale
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
28.03.2010, 19:08  [ТС]     Проверить, является ли введенное значение числом или нет #3
мне надо проверить не символ а все число
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
28.03.2010, 19:17     Проверить, является ли введенное значение числом или нет #4
Читаешь число в строку. В цикле проверяешь каждый символ. Если проверка прошла успешно, переводишь строку в числовой тип:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char str[256], *p=str;
bool isd=true;
int digit;
std::cin >> str;
while(*p)
    if(!isdigit(*p++))
    {
        isd=false;
        break;
    }
if(isd)
    digit=atoi(str);
else
    //...
easybudda
Эксперт CЭксперт С++
9461 / 5474 / 927
Регистрация: 25.07.2009
Сообщений: 10,496
28.03.2010, 19:17     Проверить, является ли введенное значение числом или нет #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
 
// возвращает true если в строке беззнаковое целое
bool isUint(const std::string& s){
    return s.find_first_not_of("0123456789") == std::string::npos;
}
 
int main(){
    std::string buf;
    while ( true ){
        std::cout << "Number: ";
        std::getline(std::cin, buf);
        if ( buf.empty() )
            break;
        std::cout << "Is " << ( isUint(buf) ? "" : "NOT ") << "a number." << std::endl;
    }
    return 0;
}
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
28.03.2010, 20:24     Проверить, является ли введенное значение числом или нет #6
Для знакового целого:
C++
1
2
3
4
5
6
7
8
// возвращает true если в строке знаковое целое
bool intSigned(const std::string& s)
{
    size_t offset=0;
    if(s[offset]=='-')
        ++offset;
    return s.find_first_not_of("0123456789", offset) == std::string::npos;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2010, 00:23     Проверить, является ли введенное значение числом или нет
Еще ссылки по теме:
Написать программу, которая определяет, является ли введенное с клавиатуры строка числом C++
Функции. Проверить, простое число или нет. Увеличить его значение на натуральное число M. Проверить, осталось ли оно простым C++
C++ Проверить, является ли введенное целое c++
C++ Проверить является ли введенное число простым
Проверить, является ли введенное число шестнадцатеричным C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
29.03.2010, 00:23  [ТС]     Проверить, является ли введенное значение числом или нет #7
Тоесть полюбому строку надо вводить я так понял. Спасибо
Yandex
Объявления
29.03.2010, 00:23     Проверить, является ли введенное значение числом или нет
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru