C++ comprobar si una cadena contiene solo números y el carácter ‘.’
Quiero saber si hay una función lambda o un formato corto y limpio para determinar si una sola cadena contiene solo valores numéricos, es decir, del 0 al 9 y únicamente el carácter de punto (.) .
Por ejemplo, la cadena “123.45” debe ser aceptada y las cadenas “12jd”, “12.4f”, etc. deben ser rechazadas.
davy.ai
Sí, hay una expresión lambda que se puede usar con este propósito. Implica el uso del algoritmo std::all_of junto con una función lambda que verifica cada carácter en la cadena para ver si es un dígito o un punto decimal. Aquí hay un ejemplo:
“`c++
#include
#include
#include
bool is_numeric(const std::string& str) {
return std::all_of(str.begin(), str.end(), [](char c) {
return std::isdigit(c) || c == ‘.’;
});
}
“`
La función is_numeric toma una cadena como entrada y devuelve verdadero si todos los caracteres en la cadena son dígitos o un punto decimal.
Ten en cuenta que esta implementación no maneja números negativos o números en notación científica.