¿Cómo detectar si atof o _wtof failes para convertir la cadena a double? Pero no tratando de verificar si el resultado es diferente a 0.0 porque mi entrada puede ser 0.0. ¡Gracias!¿Cómo detectar si atof o _wtof failes?
Respuesta
No utilice atof
. En su lugar, utilice strtod
, desde <cstdlib>
, y también comprobar errno
de <cerrno>
:
// assume: "char * mystr" is a null-terminated string
char * e;
errno = 0;
double x = std::strtod(mystring, &e);
if (*e != '\0' || // error, we didn't consume the entire string
errno != 0) // error, overflow or underflow
{
// fail
}
El puntero e
puntos uno más allá del último carácter consumido. También puede marcar e == mystr
para ver si se consumieron los caracteres.
También hay std::wcstod
para trabajar con wchar_t
-cadenas, desde <cwstring>
.
En C++ 11 también tiene std::to_string
/std::to_wstring
, desde <string>
, pero creo que se produce una excepción si falla la conversión, que puede no ser un modo de fallo deseable cuando se trata de datos externos.
@TerranceCohen: No. (Pero es posible que aún desee comprobar 'errno' para detectar el exceso y el defecto). –
Usando atof
, no puede. Pero como esto es C++, sugiero que use un std::stringstream
y que lo compruebe con operator !
después de aplicar operator >>
a double
.
- 1. Boost filtros Gzip: compilar failes
- 2. Cómo detectar si Windows se está cerrando o reiniciando
- 3. ¿Cómo detectar si un archivo es PDF o TIFF?
- 4. ¿Cómo detectar si la señal GPS es débil o alta?
- 5. ¿Cómo puedo detectar si ApplyUpdates insertará o actualizará datos?
- 6. cómo detectar si un tipo es un iterador o const_iterator
- 7. ¿Cómo detectar si el iPhone tiene pantalla Retina o no?
- 8. ¿Cómo detectar si Windows va a hibernar o suspender?
- 9. Python equivalente a atoi/atof
- 10. Detectar si el historial HTML5 es compatible o no
- 11. "atof" independiente de la configuración regional?
- 12. PHP detectar si la búsqueda tiene fecha o no
- 13. ¿Cómo detectar si un polígono tiene autointersecciones?
- 14. ¿Cómo detectar si la pantalla está activada o desactivada si el nivel de API es 4?
- 15. ¿Cómo detectar si Vista UAC está habilitado?
- 16. Cómo detectar detectar si XMLHttpRequest admite responseType = "arraybuffer"?
- 17. iPhone: ¿Cómo detectar si iTunes está jugando?
- 18. Vbscript detectar si UAC-elevated
- 19. ¿Cómo puedo detectar si Dispatcher.DisableProcessing está activo?
- 20. Detectar si una matriz contiene un número entero o doble
- 21. Detectar si una matriz es indexada o asociativa
- 22. Detectar si la acción es un método POST o GET
- 23. detectar si el DIV han barra de desplazamiento o no
- 24. Cómo detectar si DOMContentLoaded fue despedido
- 25. Cómo detectar si se toca la imagen
- 26. ¿Cómo detectar si una variable ha cambiado?
- 27. Cómo detectar si numpy está instalado
- 28. Cómo detectar si se presiona alguna tecla
- 29. Cómo detectar si NSString es nulo?
- 30. ¿Cómo detectar si UISwitch está encendido/apagado?
Acabas de descubrir la razón por la cual el uso de las funciones de atoX es malo. – PlasmaHH