Convertir de entero a string

Discussion on C, C++ and C++11 at the COJ. This is the place to clear your doubts about these languages, and to share with the community the new things you learn about them.
User avatar
luismawolf
Posts: 30
Joined: Thu Nov 13, 2014 3:12 pm
Gender: Male

Convertir de entero a string

Postby luismawolf » Tue Jun 14, 2016 10:02 am

Como puedo convertir de entero a string en una base dada?



User avatar
isaac
Posts: 83
Joined: Mon Oct 26, 2015 6:20 pm
Gender: None specified

Re: Convertir de entero a string

Postby isaac » Fri Jun 17, 2016 8:22 am

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());

User avatar
luismawolf
Posts: 30
Joined: Thu Nov 13, 2014 3:12 pm
Gender: Male

Re: Convertir de entero a string

Postby luismawolf » Tue Jun 21, 2016 10:48 am

/// 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

User avatar
alurquiza
Posts: 55
Joined: Mon Jun 22, 2015 3:47 pm
Gender: Male

Re: Convertir de entero a string

Postby alurquiza » Wed Jun 22, 2016 8:21 am

A mi tu code me compila bien, pero intenta ponerlo asi:
res.push_back('0' + n % base);


Return to “C/C++/C++11”

Who is online

Users browsing this forum: No registered users and 1 guest