Проверка является ли символ числом c

Я написал очень простую калькуляторную программу на C ++. Вот:

Как вы можете видеть, я хочу разрешить пользователям завершать приложение, нажимая «t». Это явно не сработает, потому что cin постараюсь назначить письмо double (если я нажимаю ‘t’, приложение вылетает). Вместо этого я планирую использовать строки для получения ввода, но как мне проверить, является ли строка буквой или цифрой?

Решение

Вот пример и рабочий код, просто измените его так, чтобы он соответствовал вашим потребностям

Другие решения

и использовать isalhpa() , isdigit() , isalnum() на содержимое строки?

Вы можете ввести в строку, а затем использовать следующую функцию:

Если строка числовая, она переведет ее в целое число.

Если строка не является числовой, она вернет 0: в этом случае вы можете проверить только первый символ строки, если он равен нулю, тогда рассматривать ввод как 0. Если первый символ не является нулем, рассмотрите строку как не числовой.

Ну, если вы проверяете только ‘t’, вы можете сделать это глупо и легко.

если вы хотите проверить строку, а не символ, вот пример: ссылка на сайт лучшим способом было бы сделать функцию для проверки, является ли данная строка числом или нет, если это число, возвращать истину, иначе возвращать ложь (или наоборот)

Я хотел бы проверить, является ли объект числом, так что .ToString() приведет к строке, содержащей цифры и + , — , .

это возможно с помощью простой проверки типа в .net (например: if (p is Number) )?

или я должен преобразовать в строку, а затем попытаться проанализировать на double?

обновление: для уточнения моего объекта int, uint, float, double, и так далее это не строка. Я пытаюсь сделать функцию, которая сериализует любой объект в xml вот так:

Читайте также  Рабочий стол для компа

или создать исключение.

10 ответов

вам просто нужно будет сделать проверку типа для каждого из основных числовых типов.

вот метод расширения, который должен выполнять эту работу:

Это должно охватывать все числовые типы.

обновление

кажется, вы действительно хотите проанализировать число из строки во время десериализации. В этом случае, вероятно, было бы просто лучше использовать double.TryParse .

конечно, это не будет обрабатывать очень большие целые числа / длинные после запятой, но если это так, вам просто нужно добавить дополнительные звонки long.TryParse / decimal.TryParse / чем-то еще.

воспользуйтесь свойством IsPrimitive, чтобы сделать удобный метод расширения:

EDIT: исправлено в соответствии с комментариями. С тех пор дженерики были удалены .Gettype () поля типы значений. Также включено исправление для значений nullable.

есть несколько отличных ответов выше. Вот решение "все-в-одном". Три перегрузки при разных обстоятельствах.

вместо того, чтобы катить свой собственный, самый надежный способ узнать, является ли встроенный тип числовым, вероятно, ссылаться Microsoft.VisualBasic и звонок Information.IsNumeric(object value) . Реализация обрабатывает ряд тонких случаев, таких как char[] и шестнадцатеричные и октавные строки.

там есть три разных понятия:

  • чтобы проверить, если это и число (т. е. (обычно в коробке) числовое значение), проверьте тип с is — например, if(obj is int)
  • чтобы проверить, может ли строка быть проанализирована как число; используйте TryParse()
  • но если объект не является числом или строкой, но вы подозреваете ToString() может дать то, что выглядит как число, то вызов ToString() и рассматривать его как строку

в первых двух случаях, вам, вероятно, придется обрабатывать отдельно каждый числовой тип вы хотите поддержать ( double / decimal / int ) — каждый из них имеет разные диапазоны и точность, например.

Читайте также  Сатурну больше не наливать откуда эта фраза

вы также можете посмотреть regex для быстрой грубой проверки.

Напишите функцию boolean IsDigit(char c) (Java), function IsDigit(c:char):boolean (Pascal), bool IsDigit(unsigned char c) (C/C++), определяющую, является ли данный символ цифрой или нет.

Естественно, программа должна считывать данные, вызывать эту функцию и выдавать ответ.

Входные данные
Задан единственный символ c.

Выходные данные
Необходимо вывести строку yes, если символ является цифрой, и строку no в противном случае.

Примеры
входные данные
c
выходные данные
no
входные данные
2
выходные данные
yes

Ссылка на основную публикацию
Adblock
detector