numeros - manejo de cadenas en c++
Cómo convertir un entero a una cadena en C? (3)
Eso es porque itoa
no es una función estándar. Pruebe snprintf
lugar.
char str[LEN];
snprintf(str, LEN, "%d", 42);
Esta pregunta ya tiene una respuesta aquí:
- Cómo convertir un int a cadena en C 9 respuestas
Intenté este ejemplo:
/* itoa example */
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i;
char buffer [33];
printf ("Enter a number: ");
scanf ("%d",&i);
itoa (i,buffer,10);
printf ("decimal: %s/n",buffer);
itoa (i,buffer,16);
printf ("hexadecimal: %s/n",buffer);
itoa (i,buffer,2);
printf ("binary: %s/n",buffer);
return 0;
}
pero el ejemplo no funciona (dice que la función itoa
no existe)
Hacer tu propia itoa
también es fácil, prueba esto:
char* itoa(int i, char b[]){
char const digit[] = "0123456789";
char* p = b;
if(i<0){
*p++ = ''-'';
i *= -1;
}
int shifter = i;
do{ //Move to where representation ends
++p;
shifter = shifter/10;
}while(shifter);
*p = ''/0'';
do{ //Move back, inserting digits as u go
*--p = digit[i%10];
i = i/10;
}while(i);
return b;
}
o use la función sprintf()
estándar.
Use sprintf()
:
int someInt = 368;
char str[12];
sprintf(str, "%d", someInt);
Todos los números que son representables por int
encajarán en una matriz de 12 caracteres sin desbordamiento, a menos que el compilador esté utilizando de alguna manera más de 32 bits para int
. Al usar números con mayor tamaño de bits, por ejemplo, long
con la mayoría de los compiladores de 64 bits, necesita aumentar el tamaño de la matriz: al menos 21 caracteres para los tipos de 64 bits.