Задать вопрос
@zzzmaikzzz
Junior-web

Какой аналог php функции is_string() в ЯП С++?

Собственно интересны все функции проверки введенных данных в переменную - какая библиотека за это отвечает ?
И, есть ли какой справочник функций, как на php.net ?
  • Вопрос задан
  • 2550 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
Справочник есть - MSDN.
А проверять является ли переменная строкой в c++ не надо - т.к. у каждой переменной свой тип данных и сразу ясно строка перед нами (объект класса String) или нет. А если учесть то, что строка - массив символов, то, можно любую (грубо говоря) область памяти представить как массив char
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Собственно интересны все функции проверки введенных данных в переменную

is_string в php проверяет что переменная имеет именно такой тип. В C++ в этом нет смысла так как в отличии от PHP в C++ переменная объявлена с каким-то типом.

Если же вас интересуют проверки аля is_numeric которые проверяют содержит строка число или что-то другое - то в std такого нет и придется либо подключать библиотеку либо реализовывать самостоятельно (просто пробежаться по массиву чаров и вощвращать false если встретили чары из неверного диапозона. Ну или регулярки. Но опять же мало кто этим загоняется так как при пользовательском вводе можно это все разрулить и в этих проверках опять же нет никакого смысла.
Ответ написан
IlyaEvseev
@IlyaEvseev
Opensource geek
1) Справочник функций - www.cplusplus.com/reference

2) Костыли наподобие is_string() имеют смысл только в языках с динамической типизацией.
Си++ - это язык со статической типизацией.
Для хранения строк в нём используется класс std::string
Ответ написан
@Mercury13
Программист на «си с крестами» и не только
C++ — язык со статической типизацией, и если x объявлено как string, то он всегда string. А если как int, то он никогда не string. Поэтому функция is_string в C++ просто не имеет смысла.

Правда, существуют островки динамической типизации наподобие VARIANT из OLE — это уже смотрите по месту (msdn.microsoft.com/en-us/library/cc237865.aspx) и, скорее всего, это не ваш вопрос.

Да, вы хотели проверять корректность ввода. Например, для проверки, будет ли строка числом, можно использовать www.cplusplus.com/reference/cstdlib/strtod (не забудьте потом проверить endptr!)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы