Как проверить является ли строка числом с
Перейти к содержимому

Как проверить является ли строка числом с

  • автор:

Определите, является ли строка числовой в C++

В этом посте будет обсуждаться, как определить, является ли строка числовой в C++. Решение должно проверять, содержит ли строка последовательность цифр.

1. Использование цикла

Простое решение состоит в том, чтобы перебирать строку до тех пор, пока не встретится нечисловой символ. Если все символы являются цифрами, строка является числовой. Это решение не работает с отрицательными числами или числами с плавающей запятой.

bool isNumeric ( std :: string const &str )
auto it = str . begin ( ) ;
while ( it != str . end ( ) && std :: isdigit ( * it ) ) < return ! str . empty ( ) && it == str . end ( ) ; std :: string str = "100" ; std :: cout << std :: boolalpha << isNumeric ( str ) << std :: endl ; // true

2. Использование std::find_if

Мы также можем использовать стандартный алгоритм std::find_if от заголовок, который принимает предикат для поиска элемента в указанном диапазоне. Его можно использовать следующим образом, чтобы найти позицию первого нецифрового символа. Если все символы в строке являются цифрами, строка должна быть числовой. Это решение работает только для положительных целых чисел.

Является-ли строка числом

как проверить является-ли то что ввел пользователь числом. я могу проверить ввел-ли он цифру (просто в ascii от 48 до 58 кажется — цифры). точно-также можно было-бы
поочереди начиная например слева проверять каждый символ (правда не знаю какая фунцция в c++ позволяет это сделать). но это долго и муторно, писать цикл. нет-ли другого решения?! спасибо

зы проблема еще в том что скажем Паскаль, если ввести вместо целого числа стринг (слово) просто вешал комп а цэ спокойно воспринемает букву "A" как 65 и продолжает работать )

[ Это Сообщение было отредактировано mike в 2002-03-01 1451 ]

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

Написал функцию, которая проверяет каждый символ строки до тех пор, пока не встретит не цифру или терминирующий ноль. Если встречается не цифра, то функция возвращает 0. Если на всём пути не встретиалсь не цифра, возвращает 1. Проблема в том, что она не работает со строками, которые содеражт русские символы, так как их численные значения не входят в диапозон от -1 до 255.

int is_number(const std::string& s) < int count = 0; while (s[count]) < if (isdigit(s[count])) ++count; else return 0; >return 1; > 
  1. Почему русские символы не входят в данный диапозон?
  2. Почему то, что русские символы не входят в диапозон, влияет на работу функции(т.е. выдаётся ошибка)?
  3. Что нужно сделать с моим кодом, чтобы функция корректно работала со строками, содержащие русские символы?

Отслеживать
задан 11 мая 2019 в 18:32
iwannaknow iwannaknow
17 8 8 бронзовых знаков

@Harry когда навожу на строку, то показывает, что она содержит кол-во символов в ней + 1. Из этого сделал такой вывод.

11 мая 2019 в 18:41

Приведите пример строк (обязательно с указанием их кодировки), на которых эта функция работает некорректно.

Как проверить строку на цифры java

Для того, чтобы проверить строку на цифры, можно воспользоваться методами класса StringUtils из библиотеки Apache Commons Lang . Этот класс содержит множество полезных методов, которые упрощают работу со строками. Для начала нужно установить в проект новую зависимость. Если вы используете gradle, нужно добавить в файл build.gradle в секцию dependencies такой код:

implementation 'org.apache.commons:commons-lang3:3.12.0' 

Затем класс нужно импортировать в том месте, где вы планируете его использовать:

import org.apache.commons.lang3.StringUtils; 

Для проверки строки на цифры, в классе есть статический метод isNumeric() . В качестве аргумента метод принимает последовательность символов CharSequence и возвращает булево значение в зависимости от того, состоит ли строка только из цифр.

StringUtils.isNumeric("hello"); // false StringUtils.isNumeric("hello12"); // false StringUtils.isNumeric("123"); // true 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *