Convertir int a char (o string) en c++

Aziwar

Buenas el caso es que tengo un polinomio representado en un array, y necesito covertirlo a string.

Estoy haciendolo conviertiendo cada monomio a string, pero me di cuenta de que los números no me los pone.

Entonces me hice un ejemplo sencillo de conversion:

	int a = 3, b = 2;
	string aa = a + "* x^" + b;
	cout << aa;

y efectivamente, la salia es x, en vez de 3 x2.

Googleando he visto la función itoa (http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/) pero incluyendo la libreria me dice que no se encuentra (no que le pase mal los parametros, directamente que no se encuentra). "error: ‘itoa’ no se declaró en este ámbito"

De que otro modo puedo convertirlo?

m0rG

Como pone en el link que has indicado en tu post,itoa() no es una función estándar de C++ y solo la soportan ciertos compiladores. Un poco más abajo en la sección de portabilidad hay una alternativa que puedes probar usando la función sprintf() . En concreto para convertir un número (int) en base decimal a un string sería:

sprintf(str,"%d",value)

Donde str es la cadena de caracteres y value el entero. El segundo argumento se utiliza para decirle a la función sprintf cómo "formatear" la información que le pasas.

dagavi

itoa es de C y como ves no te retornará un objeto string si no un "string real" (es decir, una rray de chars acabado en '\0' ).

Tienes métodos para hacerlo. El primero y más obvio es programarlo tu, un itoa es un ejercicio sencillo y típico de primeras clases de programación. Sin contar que al escribir en google itoa te salen implementaciones, que también puedes encontrar en la wikipedia.

Por otro lado, aunque nunca lo he usado, lo voy a usar ahora solo para poder darte una respuesta correcta, tienes la clase de C++ stringstream (cabeceras en "sstream" ) que creará un canal de entrada y salida hacia un string (en vez de hacia consola, por ejemplo). Por lo tanto el string que tengas resultado sería lo mismo que escribirías por pantalla (que es lo que te interesa).

#include <sstream>
#include <iostream>
#include <string>
using namespace std;


int main() {
	int a = 3, b = 2;
	stringstream s; // Creas el canal, contendrá el string
	s << a << "* x^" << b;
	cout << s.str() << endl; // El string resultante se consulta con el método str()
}

Salida (contenido del string stream):
3* x2

Edit: Viendo que también te han contestado, podríamos decir que al igual que "cout" es el "printf" de C++, "cin" el "scanf", los objetos de stringstream serían los "sprintf" y "sscanf".

dr_Rouman

Yo tuve que hacerme una para dibujar números como caracteres en glut/openGL, no había caído en los streams. Y de hecho, creo que puse itoa por probar y también me dijo eso xD

Aziwar

usando lo de dagavi funcionó el ejemplo sencillo ese. Ahora estoy intentando adaptarlo a lo que necesito en realidad xD

Usuarios habituales

  • Aziwar
  • dr_Rouman
  • dagavi
  • m0rG