2010-02-09 10 views
6

Estaba buscando una manera de convertir un entero a una cadena de una manera portátil (portátil entre al menos Windows & Linux y x86 y x86_64) y pensé que itoa(X) era estándar al igual que atoi(1).¿Cómo convertir un entero a una cadena portably?

pero leí lo siguiente en la entrada de la Wikipedia:

La función itoa es una extensión no estándar generalizado al lenguaje de programación C estándar. No se puede usar de forma portátil, ya que no está definido en ninguno de los estándares de lenguaje C; sin embargo, los compiladores a menudo lo proporcionan a través del encabezado mientras están en modo no conforme, porque es una contraparte lógica de la función de biblioteca estándar atoi.

Así que me gustaría saber si hay alguna manera de hacerlo de manera portátil o no. En caso de que tenga que escribir mi propia función, ¿con qué cosas debo tener cuidado?

+0

mientras itoa no es _officially_ portable, dudo que alguna vez se encuentre con un problema. y si lo haces, es una función muy fácil de escribir. –

+0

Siempre puede implementar la suya propia: P –

Respuesta

1

La mayoría de las veces solo usa printf ("% d");

http://en.wikipedia.org/wiki/Printf

Puede utilizar sprintf si lo necesita en una memoria intermedia, pero ¿con qué frecuencia se convierte a una cadena y no lo escribe a un fichero o dispositivo de salida?

0

Si no lo hace con demasiada frecuencia, ¿qué tal una rutina de biblioteca de tiempo de ejecución que escribe algunos números en la memoria, analiza los resultados y almacena un tipo de codificación? A partir de ese momento, simplemente enciende su "tipo de codificación" para seleccionar qué rutina de conversión usar.

Cuestiones relacionadas