• Domingo 22 de Diciembre de 2024, 16:57

Autor Tema:  Conversión De Unsigned Int A String  (Leído 2707 veces)

odetualet

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Conversión De Unsigned Int A String
« en: Jueves 26 de Agosto de 2004, 21:29 »
0
Saludos, es la primera vez que posteo por aquí, y supongo que no será la última.

Tengo un problemilla muy tonto que seguro que alguien me podrá ayudar a solucionarlo.

Estoy haciendo una práctica de C++ y hemos de usar STL.
Para trabajar con cadenas uso la clase string de la STL. La cuestión es que necesito pasar un unsigned int a string, pero no sé como puedo hacerlo.

Leo un dato de una clase que contiene un año y está definido como unsigned int, pero para mostrarla por pantalla necesito pasarlo a string. He intentado hacer un cast de la siguiente manera

(string)numAño

pero no le gusta. A ver si alguien me puede ayudar.

Otra pregunta, para ordenar una lista de la STL se ha de usar el método sort, lo que no me queda claro es qué parámetros se le pasa. Me ha parecido entender que le tengo que pasar dos iteradores, pero a partir de aquí me pierdo.

Perdón por el tocho!!!
Muchas gracias!!! Un saludo

kennethsleiker

  • Miembro activo
  • **
  • Mensajes: 25
  • Nacionalidad: do
    • Ver Perfil
    • http://cybersotano.netii.net
Re: Conversión De Unsigned Int A String
« Respuesta #1 en: Viernes 27 de Agosto de 2004, 02:20 »
0
Estube haciendo pruebas, y consigue hacer lo que tu quieres pero lo que hice fue convertir primero mediante cast de unsigned int a float y luego utilizando la funcion gcvt() convertir de float a char *.  Fijate en mi ejemeplo.

Código: Text
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. int main ()
  7. {
  8.   unsigned int NumAno = 2004;
  9.   float flNumAno;
  10.   char strAno [20];
  11.  
  12.   flNumAno = (float)NumAno;
  13.   gcvt (flNumAno,4,strAno);
  14.   cout << "\nValor de la cadena strAno ";
  15.   puts (strAno);
  16.  
  17.   cout << "\nTamano de unsigned int " <<  sizeof( unsigned int );
  18.   cout << "\nTamano de float " << sizeof( float );
  19.   cout << "\nTamano de strAno (char [20]) " << sizeof( strAno );
  20.   return 0;
  21. }
  22.  

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Conversión De Unsigned Int A String
« Respuesta #2 en: Viernes 27 de Agosto de 2004, 03:02 »
0
Hola!!!!!!!!!

La verdad es q desconozco lo de ordenar el vector, lista o lo q sea de la STL, pero alguien lo debe saber. Lo q si te puedo decir es como convertir. Usa esto:
Código: Text
  1.  
  2. sprintf()
  3.  
  4.  

Salu2!!!!!

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Conversión De Unsigned Int A String
« Respuesta #3 en: Viernes 27 de Agosto de 2004, 16:45 »
0
Hola.

Siendo que trabajas con C++ y estás aprendiendo STL, creo que deberías dejar de lado las funciones de C para estas tareas y usar las string streams que te ofrece C++. Con éstas, puedes convertir a un string cualquier tipo de datos (ya sea definido por ti o del lenguaje) que tenga un operador << que trabaje con streams. Observa este código:

<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->//
// main.cpp - Conversión de un tipo de datos a una cadena
//

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

template<class T> std::string toString(T value)
{
    ostringstream os;
    os << value;
    return os.str();
}

int main()
{
    string cadena;

    unsigned int ui = 24;
    cadena = toString<unsigned int>(ui);
    cout << "unsigned int: " << cadena << endl;

    float f = 12.34f;
    cadena = toString<float>(f);
    cout << "float: " << cadena << endl;

    string s = "texto";
    cadena = toString<string>(s);
    cout << "string: " << cadena << endl;

    getchar();
    return 0;
}<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

Como ves, he definido una función template para facilitar la conversión en cada lugar que sea necesaria, para ahorrar trabajo. Se podría haber ahorrado la variable cadena y haber enviado directamente la salida de toString a cout, pero así queda más claro que es una cadena.

Espero que te sirva.

Un saludo.

Ruben3d

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Conversión De Unsigned Int A String
« Respuesta #4 en: Viernes 27 de Agosto de 2004, 17:01 »
0
Hola.

Con respecto a la ordenación de listas, no has de usar iteradores. Si el tipo de datos es sencillo, basta llamar a su método sort() para que se ordene automáticamente de menor a mayor. Puedes cambiar el comportamiento de la ordenación pasandole un predicado como parámetro, pero esto es optativo. Para clases complejas deberás haberles definido los operadores < y == para que sort() funcione con ellas.

Un saludo.

Ruben3d

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Conversión De Unsigned Int A String
« Respuesta #5 en: Viernes 27 de Agosto de 2004, 19:09 »
0
Hola!!!!!!!!!!!

Es verdad, pero de esa manera solo lo sacas por la salida standard pero no lo guardas en un std::string. Lo q pedia era lo q vos le pedias, pero si se quisiera manipular la cadena no podrias

Salu2!!!!!!!!!!!

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Conversión De Unsigned Int A String
« Respuesta #6 en: Sábado 28 de Agosto de 2004, 15:08 »
0
Si te fijas, el retorno de la función va a una string, llamada cadena, y es esa cadena la que saco por pantalla. ¿Qué problema hay en manipular esa cadena?

Un saludo.

Ruben3d

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Conversión De Unsigned Int A String
« Respuesta #7 en: Sábado 28 de Agosto de 2004, 21:08 »
0
Nol lo habia visto

Tenes razon!!!!!!!!!