arduino / arduino/ArduinoCore-API
Add `String::isInt()` and `String::isFloat()` for more robust String parsing/conversion
- Lenguaje dominante
- C++
- Estrellas
- 306
- Forks
- 150
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
### Describe the request
I propose adding two new member functions to the `String` class:
```cpp
int String::isInt()
```
Returns a value different from zero if `String` is a valid representation of an integer.
Returns zero otherwise.
```cpp
int String::isFloat()
```
Returns a value different from zero if `String` is a valid representation of a floating point number.
Returns zero otherwise.
🙂 The user will be able to validate a `String` prior to attempting a conversion to `int` or `float`
### Describe the current behavior
The current implementations of `String::toInt()` and `String::toFloat()` rely on `atol()` and `atof()`, respectively:
https://github.com/arduino/ArduinoCore-API/blob/0f4e57ea193a00163ae59f0f0ff478feae7eb5db/api/String.cpp#L733-L748
Both `atol()` and `atof()` have no means of signaling a failed conversion due to improper input `String`s (both return `0` upon error).
🙁 The functions do not provide the user with an indication of a failed conversion.
### ArduinoCore-API version
Last verified with: 0f4e57ea193a00163ae59f0f0ff478feae7eb5db
### Additional context
#### Related
- https://github.com/arduino/Arduino/issues/1796
- https://github.com/arduino/Arduino/issues/7177
- https://github.com/arduino/ArduinoCore-API/issues/88
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Línea de trabajo
Comienza en api/String.cpp, alrededor de las implementaciones enlazadas de String::toInt() y String::toFloat(), y después revisa las issues relacionadas de Arduino para conocer el comportamiento de parsing esperado. Se considera terminado cuando String::isInt() y String::isFloat() están disponibles y distinguen las representaciones válidas de las entradas no válidas sin confundir un fallo de conversión con un cero numérico.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- cpp
- Área
- api, embedded-iot
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100