Page 1 of 1

Convertir de entero a string

Posted: Tue Jun 14, 2016 10:02 am
by luismawolf
Como puedo convertir de entero a string en una base dada?

Re: Convertir de entero a string

Posted: Fri Jun 17, 2016 8:22 am
by isaac
Muy Facil, con la funcion itoa. Los parametros son: itoa(cadena_que_quieres_convertir, cadena_donde_guargas_el_resultado, base). Por desgracia no te va a servir para nada en el COJ porque como se ha mencionado en varias ocasiones, el servidor del COJ esta corriendo sobre Ubuntu y los compiladores que hay para linux no tienen esta funcion. Tendras que implementarla. Eso es bastante facil:

Ejemplo:
int n = 192839823, base=3;
string res;

/// Algoritmo usual de cambio de base
while(n) {
res.push_back(n % base + '0');
n /= base;
}

/// Se inserta un cero al final para el caso en que n sea cero
res.push_back('0');

/// Se eliminan todos los ceros del final siempre y cuando la cantidad de
/// caracteres que compongan el numero sean > 1, garantizando que si
/// el numero es cero, no se elimine.
while(res.size() > 1 && res[res.size()-1] == '0')
res.erase(res.size()-1, 1);

/// invertir la cadena
res = string(res.rbegin(), res.rend());

Re: Convertir de entero a string

Posted: Tue Jun 21, 2016 10:48 am
by luismawolf
/// Algoritmo usual de cambio de base
while(n) {
res.push_back(n % base + '0');
n /= base;
}

en la parte del push_back me dice que no puede coger eso como argumento porque no es un char

Re: Convertir de entero a string

Posted: Wed Jun 22, 2016 8:21 am
by alurquiza
A mi tu code me compila bien, pero intenta ponerlo asi:
res.push_back('0' + n % base);