convertir numero char a int

Iniciado por d00ze13, 13 Enero 2011, 21:54 PM

0 Miembros y 1 Visitante están viendo este tema.

d00ze13

Queria saber como se hace para convertir un numero char a int. os pongo un ejemplo
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
int main(void){
       char figura[2]={1,4};

       if(figura[1]>=1&&figura[1]<=8))  //quiero que me diga si esta entre el numero 1y8
            cout<<"Correcto"<<endl;
       else
           cout<<"Error"<<endl;

       return 0;
}

Nobody12

Con la función atoi:

Código (cpp) [Seleccionar]
char *cadena="453423";
int valor=atoi(cadena);

Incluye la biblioteca cstdlib antes.

Un saludo  ;)

Martxel

Buenas tardes,

¿Has probado con la función atoi()?

Quizá algo así:


if(atoi(figura[1]) >= 1 && atoi(figura[1]) <= 8)
cout << "Correcto" <<endl;


Tendrás que incluir la librería correspondiente.

Un saludo.

EDIT: Se me han adelantado. Siento la repetición.

d00ze13

la funcion de atoi ya la sabia, la forma de valenciano013 no me sirve ya que yo solo quiero acceder a la posicion 2 de la cadena.
tengo este caso pero es que no me va
Código (cpp) [Seleccionar]
(atoi(figura[1])>=1&&atoi(figura[1])<=8)

Martxel

Bien, he hecho unas pruebas y aquí tienes el código correcto, comprobado que compila con g++ y funciona bien:


#include <iostream>
#include <stdlib.h>
using namespace std;
int main(void) {
        char figura[2]={'1','4'};
        if(atoi(figura + 1) >=1 && atoi(figura + 1) <=8)
                cout << "Correcto" << endl;
        else
                cout << "Error" << endl;
        return 0;
}


Un saludo.

d00ze13

ahora si que funciona mil gracias Martxel, una duda, porque pusiste (figura + 1) para acceder a la direccion de memoria donde esta almacenado figura[1] ?

Martxel

"figura" contiene la dirección de figura[0] y "figura + 1" sería la siguiente dirección, esto es, la de figura[1].

Un saludo.