"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo comprobar si una cadena de C++ representa un número entero?

¿Cómo comprobar si una cadena de C++ representa un número entero?

Publicado el 2024-11-12
Navegar:123

How to Check If a C   String Represents an Integer?

Comprobación si una cadena C es un número entero

En determinadas situaciones, como al procesar la entrada del usuario, puede ser necesario diferenciar entre cadenas que representan números enteros y aquellas que no. Afortunadamente, hay varias formas de realizar esta tarea en C.

Un enfoque es aprovechar la función strtol de C, que convierte una representación de cadena de un número entero en un valor entero. Para usar strtol, puede escribir una función simple que encapsule el proceso de conversión:

inline bool isInteger(const std::string &s) {
  if (s.empty() || ((!isdigit(s[0])) && (s[0] != '-') && (s[0] != ' '))) return false;

  char *p;
  strtol(s.c_str(), &p, 10);

  return (*p == 0);
}
  • Descripción general: La función verifica si la cadena proporcionada s representa un número entero.
  • Cadenas vacías: Primero verifica si el la cadena está vacía.
  • Símbolos iniciales: también verifica si hay caracteres iniciales que no sean dígitos, como ' ' o '-', y devuelve falso si no están presentes (lo que indica una -integer).
  • Conversión strtol: La función utiliza la función strtol para realizar la conversión. Si strtol encuentra un carácter que no es un dígito, asigna la dirección de ese carácter al puntero p.
  • Evaluación del resultado: si p no apunta al final de la cadena (representado por el carácter '\0'), significa que strtol encontró un carácter que no es un dígito. En este caso, la función devuelve falso, lo que indica que s no es un número entero.

Esta función proporciona una forma confiable de determinar si una cadena determinada se puede analizar como un número entero. Al incorporarlo a su código, puede manejar cadenas que representen números enteros y no enteros de manera adecuada.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3