Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

Ayuda en c++, como pasar un string a int;

marmotau

Bovino maduro
Desde
6 Oct 2008
Mensajes
198
Que tal bakunos , si alguien me puede ayudar en un pequeño error que me sale.
la idea es obtener una notacion desarrollada(435=4000+30+5), en la cual yo desde mi main pregunto por el numero, despues lo mando a un metodo de instancia y en el metodo hago el proceso de obtener la notacion, simplemente que no se como pasar ese string a int yo lo tengo de la siguiente manera pero no me sale bien el resultado ojala me puedas ayudar.
class Logvec{
private:

public:
inline void Desarrollado(string num){//string es un tipo de clase no un dato
int i,lim,pot;
lim=num.length();
pot=lim;
int vec[]={0,0,0,0,0,0};//lo inicialice con 0 unicamente para tener algo pero lo tenia asi int vec[lim];
for(i=1;i<lim;i++){
pot-1;
int atoi(const char*num);
vec=num;
cout<<""<<vec;
system("pause>nul");
// vec=pow(10,pot)*vec;//se supone que al yo tener mi numero en esa posicion la multiplicaria por 10 a un numero por ejemplo si es 456, seria 4*10^2(en la posicion que esta de pot-1)
cout<<""<<vec;
system("pause>nul");

}
}
};
int main(int argc, char *argv[]){
Logvec vec1;
string num;
cout<<"Ingresa un numero para obtener la notacion desarrollada:"<<endl;
cin>>num;
vec1.Desarrollado(num);
system("pause>nul");
return EXIT_SUCCESS;
}
 
a ver xD, creo que tienes mal dos cosas

dentro de tu ciclo for :

pot-1;
esto parece otro error por que no estas asignando el valor de pot-1 a nada(ni siquiera a pot mismo)
deberias usar pot-- o pot = pot -1

vec=num;
vec es entero, num es char, la asignacion funciona bien pero fijate en que '0'(caracter) no es lo mismo que 0(entero)
si te esta dando mal los valores al vector (por ejemplo un cero sea algo como 40) deberias usar vec=num - '0';

creo que con eso te debe dar la salida que buscas
 
que crees qwerrewq no funciono eso del caracter y perdon fue error de dedo es pot-=1;
lo que si que sigue sin darme el resultado con este me arroja basura y si es certo 0 en caracter me asigna un 40 en el int gracias
 
pues segun yo recuerdo si haces '9'-'0' es nueve entero, asi que no entiendo por que te sigue dando mal el resultado
lo que podria ser es que quizas la resta no se hace normal, tu string es la clase estandar?
ya intentaste hacer algo como
char c = num
vec = c - '0' ?
 
que crees qwerrewq no funciono eso del caracter y perdon fue error de dedo es pot-=1;
lo que si que sigue sin darme el resultado con este me arroja basura y si es certo 0 en caracter me asigna un 40 en el int gracias
 
este ejercicio lo puedes hacer sin convertir a INT. únicamente necesitas saber cuantos caracteres hay en tu string y de ahi ir imprimiendo.

en tu ejemplo seria:
cadena= 435 = 3 caracteres por lo tanto tienes las posiciones 0,1,2 pues simple;
imprimes
cadena[0] mas 2 ceros
cadena[1] mas 1 ceros
cadena[2] mas 0 ceros

espero te ayude, lo veo mas fácil XP
 
Volver
Arriba