Convertir char a int en C++

Libreria cstdlib convertir char a int C++

Hay momentos en los que almacenamos el texto que el usuario ingresa en una variable de tipo char pero en verdad lo que estamos recibiendo son números y por tanto planeamos hacer alguna operación matemática con ellos como el sumarlos o cualquier otro procedimiento aritmético, acontece que en principio los números ingresados en un char no pueden operarse como números sino que los reconoce como texto.

Para solucionar este problema y poder convertir o transformar el char a int existe una función contenida en la librería <cstdlib>, esta función es atoi, su uso es muy sencillo veamos primero el modelo de uso es int=atoi(char); si todavía no queda claro veamos un ejemplo en acción.

Nada más aclaro que se necesita de mínimo 2 variables una será la variable tipo char y la otra será una variable tipo int para almacenar el valor numérico contenido en la variable de texto.

Ejemplo de atoi en C++



#include <cstdlib>
#include <iostream>

using namespace std;
int numero;
char texto[50]="10";

int main()
{
numero = atoi(texto);
cout << numero << endl;
system("pause");
return 0;
}


Ejemplo compilado de atoi en C++

Como usar atof en lugar de atoi



Recordaran que en las entradas previas se mencionaba que un número entero no tiene punto ni parte decimal, los que sí tienen parte decimal son los llamados números de tipo flotante y se declaran las variables de tipo flotante en C++ con la palabra reservada float, o doublé que viene a ser lo mismo que un float pero tiene una doble capacidad de almacenamiento, en estos casos no sirve la función atoi esa i al final de atoi significa integer (entero), la que usaremos es atof cuya f al final significa float.

Ejemplos de atof



#include <cstdlib>
#include <iostream>

using namespace std;
float numero;
char texto[50]="5.15";

int main()
{
numero = atof(texto);

cout << numero << endl;
system("pause");
return 0;
}


Ejemplo compilado usando atof C++

Diferencia entre atof y atoi



Son casi lo mismo, en su estructura solo cambia el tipo de la variable que almacenara el número y el nombre de la función que usamos, obviamente el objetivo sería ingresar valores con decimales pero es igual de obvio que esto se hace solo por si existe la posibilidad de que el usuario ingrese dichos valores decimales, no significa que por fuerza tienen que tener decimales para usar atof(); bien puede que sea un numero entero pero la posibilidad queda abierta a recibir decimales cuando usamos atof(); no así en caso de usar atoi();.

Qué pasa si el usuario ingresa texto y números al mismo tiempo?



Dada esta situación tras hacer la conversión con alguna de estas dos funciones el resultado que regresa y se almacenara en la función numérica será 0 (cero).
Comentarios y preguntas