En lenguaje de C++ después de leer cadenas se presentan problemas para leer números, debido a que nuestro programa no identifica que son enteros y por lo tanto no se pueden realizar operaciones.
Para solucionar esto es necesario convertir nuestra cadena a un entero.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <iostream> #include <cstdlib> using namespace std; /* * Programa que convierte una cadena a un entero int y le suma 2 */ int main () { //Declaracion de variables en string string numero; //pide y guarda los valores en numero cout << "¿cual es el numero?" << endl; cin >> numero; //convierte tu cadena a un entero le suma 2 y te muestra el resultado cout << "Tu numero es " << atoi(numero.c_str())+2; return 0; } |
Solución.
Para convertir nuestra cadena a un entero utilizamos la función atoi. Esta función nos retorna el valor convertido.
Analiza la cadena tipo string e interpreta su contenido como un número entero, que se devuelve como un valor de tipo int.
La primera función descarta todos los espacios vacíos hasta que encuentra el primer caracter. A partir de este caracter toma un valor inicial seguido de dígitos base 10 como sea posible y los interpreta como un valor numérico.
La cadena puede contener caracteres adicionales o texto después de los que forman el número entero, estos caracteres son ignorados y no tienen ningún efecto sobre esta función.
Si la primera secuencia de caracteres no está en blanco str no es un número entero válido, o si no existe tal secuencia, ya sea porque str está vacía o sólo contiene espacios en blanco, se devuelve un valor cero.
Lo anterior nos describe lo siguiente, por ejemplo: Si guardamos en nuestra cadena tipo string un d24, lo que nos va a devolver nuestra función atoi es un 0, esto porque nuestro primer carácter es una letra. Pero si guardamos un 24d lo que nos devolverá será un 24 ignorando la d al final.
Para utilizar la función atoi necesitamos llamar la librería cstdlib #include <cstdlib>. Y la sintaxis es la siguiente.
1 |
atoi(variableString.c_str()); |
muchas gracias
Buenas noches, tengo una duda
Si en la variable String tengo un valor binario (como 10110001) y lo quiero convertir a entero, no genera algún problema? He estado intentando y el resultado me da valores negativos, Gracias por la ayuda
Excelente Michelle, impecable el blog, esta demasiado bueno, como siempre la mejor opcion, saludos!