convertir entero a cadena

      • 22
      • mensajes
      • miembro desde
      • 18/02/04
    #1 convertir entero a cadena

    hola, necesito saber como puedo hacer para convertir un dato de tipo entero (int) a uno de tipo cadena (char*)...por ejemplo:
    char* anio;
    int anio2=1999;
    anio=(char*) anio2;
    esto al compilarlo me tira un error de windows, asi q con un cast no funciona, tambien probe con un strcpy y tampoco anda.
    en si necesito convertir una serie de variables de tipo entero a cadenas y concatenar esas cadenas con strcat.
    al que me pueda ayudar muchas gracias.

  1. ¿Este tema te pareció interesante? Compártelo!

    ¿No es lo que buscabas? Intenta buscar un tema similar

    8 comentarios / 391508 Visitas

      • 2,582
      • mensajes
      • miembro desde
      • 16/03/04
    17/07/2005
    #2 Re: convertir entero a cadena

    Fijate en la libreria STDLIB.h, ahi tenes muchas funciones para convertir string a entero, long o float y viceversa.
    En este caso en particular, para convertir un entero a string (char *) haces asi:
    int numero = 234;
    char cadena[25];
    itoa(numero,cadena,10); //El 10 es la base del sistema numerico, en decimal es 10.

      • 22
      • mensajes
      • miembro desde
      • 18/02/04
    17/07/2005
    #3 Re: convertir entero a cadena

    gracias, voy a probar eso

      • 1
      • mensajes
      • miembro desde
      • 24/12/08
    15/05/2009
    #4 Re: convertir entero a cadena
    Cita Escrito por AGUSTIN_RAMONE Ver mensaje
    Fijate en la libreria STDLIB.h, ahi tenes muchas funciones para convertir string a entero, long o float y viceversa.
    En este caso en particular, para convertir un entero a string (char *) haces asi:
    int numero = 234;
    char cadena[25];
    itoa(numero,cadena,10); //El 10 es la base del sistema numerico, en decimal es 10.
    Amio una consulta sabes como hacerlo pero sin usar itoa ?=?

    yo lo he estado haciendo asi pero restringuido para 4 digitos

    int lim=3;
    int d[lim];
    int residuo;
    d[0]=num/1000;
    residuo=num%1000;
    d[1]=residuo/100;
    residuo=num%100;
    d[2]=residuo/10;
    d[3]=residuo%10;

    int i=0;
    while(i<lim)
    {
    cadena[i]=d[i]+48;
    i++;
    }
    cadena[i]=NULL;
    cout<<"La nueva cadena es :"<<cadena;
    }

    Y su pudieses hacerlo con punto flotante
      • 5,454
      • mensajes
      • miembro desde
      • 01/01/07
    • Baneado/a
    • Baneado
    15/05/2009
    #5 Re: convertir entero a cadena

    Tenes que hacerlo con sprintf, que funciona como printf pero en lugar de displayartelo por pantalla te lo vuelca a un char*.
    Por ejemplo quedaria asi:

    Código:
      char numero[20];   // tiene que estar dimensionado o es eso o es char* numero = new char[20]; (ojo 20 le puse yo como un tamaño razonable para que entre el numero)
    
      int valor = 1999;
    
      memset(numero, 0, sizeof(numero));  // inicializo, si usas el new deberias hacer memset(numero, 0, 20);
    
      sprintf(numero, "%s", valor);  // listo en numero tenes el valor entero convertido a char*
      • 4
      • mensajes
      • miembro desde
      • 14/06/11
    14/06/2011
    #6 Re: convertir entero a cadena

    pueden pasar un programa ya hecho sabre la convercion de char a int??

      • 1,097
      • mensajes
      • miembro desde
      • 27/02/11
    15/06/2011
    #7 Re: convertir entero a cadena
    Cita Escrito por liz-20111 Ver mensaje
    pueden pasar un programa ya hecho sabre la convercion de char a int??
    Código:
    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #define N 20
    long Caracter_A_Numero(char []);
    
    void main(void)
    {
        char PALABRA[N];
        long NUMERO;
        printf("Ingr\202\me un n\243\mero:\t");
        scanf("%s", PALABRA );
    
        NUMERO = Caracter_A_Numero(PALABRA);
    
        printf("\n FF %ld", NUMERO);
        fflush(stdin);
        getchar();
    }
    
    long Caracter_A_Numero(char STRING[])
        {
            long NRO=0;
            int i=0,j=strlen(STRING);
            while(i<j)
                {
                    NRO+=(STRING[j-1-i]-48)*pow(10,i);
                    i++;
                }
            return NRO;
        }
    Con esto evitas usar atoi.

    La función Caracter_A_Numero pide un Vector de Caracteres, o sea un string.

    El mismo debe ser numerico, así que habría que procurar con alguna otra función (que no viene al caso) evitar que pongan letras o símbolos y así sólo se puedan imputar caracteres.

    Ingresando números [un string de caracteres de símbolos numericos] como este

    char Num[] = { '1' , '2' , '3' }

    Hacemos un while que vaya de 0 a j elementos, donde j
    es igual a la cantidad de caracteres que tenga la palabra menos 1 ( porque si tiene 1 2 3, eso quiere decir que son 3 caracteres, pero nosotros nos vamos a manera con un vector de 3 cantidades que va de 0 a 2, es decir 1 menos que la cantidad. por eso mismo va desde la cantidad de caracteres menos 1 )

    Es decir me refiero a esto
    Código:
           int j=strlen(STRING);
    Donde "STRING" es el nombre del puntero del vector

    Ahora lo que hago en el While es a una variable Numerica [le puse long para que soporte grandes datos] sumarle el caracter 1 menos 48
    ¿por qué -48?

    Porque en la tabla ascii Registrarse Inicia sesión el caracter 0 es el 48. Eso quiere decir que si yo pongo '3' obtengo que es el valor 51 según la tabla ascii [que es lo que contiene en realidad el vector]
    Si hago 51-48 ¿Qué me queda? --------> 3

    Casualmente si le resto al valor ascii 48, obtengo el valor en decimal.

    Entonces ahora ya sé como obtener de caracteres el valor decimal. El siguiente problema es concatenarlos.

    Eso es fácil.

    Los números como por ejemplo el

    9871

    Se descoponen de la siguiente manera (seguramente los siguiente vas a recordar que lo viste en 1er o 2do grado del primaria)

    9 8 7 1 =
    9000 = 9 decenas de mil
    800 = 8 centenas
    70 = 7 decenas
    1 = 1 unidad

    O sea que el número 9871 se puede descomponer en la suma de 9000+800+70+1=9871

    Eso queire decir que la posición del caracter multiplicado por 10 por el valor me da o la unidad, decena, centena, decena de mil,etc.

    Para ello hago los siguiente
    Código:
                    NRO+=(STRING[j-1-i]-48)*pow(10,i);
    Luego incremento la posición con i++ y sigo hasta terminar.

    Luego retorno el valor a NUMERO que es la variable que invocó la función por medio de la asignación en el main

    Lo importante no es el "main" sino la función Caracter_A_Numero
      • 75
      • mensajes
      • miembro desde
      • 20/02/08
    04/09/2011
    #8 Re: convertir entero a cadena

    esto es mejor

    #include <iostream>
    #include <sstream>

    using namespace std;

    int main()
    {
    stringstream ss;
    string s;
    int n;

    //to convert int to string
    n = 1024;

    ss.clear();
    ss << n; //write the int to stringstream
    ss >> s; //read back the value as a string
    cout << "string value: " << s << endl;

    //to convert int to string
    s = "2048";

    ss.clear();
    ss << s; //write the string to stringstream
    ss >> n; //read back the value as an int
    cout << "int value: " << n << endl;

    }

    fuente: Registrarse Inicia sesión

      • 1,097
      • mensajes
      • miembro desde
      • 27/02/11
    11/09/2011
    #9 Re: convertir entero a cadena

    Lamento pincharte el globo pero "string" no existen en C.

    Eso es C++ y depende que compilador [no IDE].

    Examente de programación - 0

IR ARRIBA