Programación General => C/C++ => Mensaje iniciado por: ifmaster en Martes 15 de Agosto de 2006, 18:28
Título: Como Converir Un Float A Una String?
Publicado por: ifmaster en Martes 15 de Agosto de 2006, 18:28
Hola, e estado buscando por ahi la forma de convertir un float a una string pero no lo consigo ><, lo que yo quiero es lo siguiente:
std::string s = "Float: "; float f = 12.3456;
s += f;
Y que el resultado de la string imprimida por pantalla sea:
Float: 12.3456
Necesito hacerlo con la string de stl y ya e probado un monton de cosas pero no lo consigo, me podeis ayudar? Gracias de antemano. Salu2
Título: Re: Como Converir Un Float A Una String?
Publicado por: ifmaster en Martes 15 de Agosto de 2006, 18:57
E encontrado una forma, pero me parece un poco "tocha" para la tonteria que es, funciona, pero si alguien sabe de alguna funcion de la string o alguna funcion que me aga la conversion... mejor xD
Pongo aqui lo que e echo: Tengo dos funciones:
std::string intToString(int number) {
std::vector <char> number_digits;
do { int temp_number = number / 10; number_digits.push_back(number % 10);
if (temp_number == 0) break;
number /= 10; } while(true);
std::string number_string;
number_string.resize(number_digits.size());
int mark = number_digits.size() - 1;
for (size_t i = 0; i < number_digits.size(); i++) { number_string = number_digits[mark] + '0'; mark--; }
return number_string; }
Esta primera funcion ya te la tenia echa y convierte un entero a una string, aqui va la segunda y al que me quiero ahorrar de alguna forma:
std::string floatToString(float number, int decimals) { int first_number = 0; int second_number = 0; std::string number_string;
first_number = number / 1;
number_string = intToString(first_number); int count = number_string.size(); number_string += '.';
int i = 0; float current_number = number;
while (i < decimals) { current_number *= 10; std::string s_temp = intToString(current_number); number_string += s_temp[count]; count++; i++; }
return number_string; }
Funcionan bien, pero me parecen muy tochas, espero que alguien pueda echarme una mano, gracias nuevamente.
Título: Re: Como Converir Un Float A Una String?
Publicado por: fuhrer en Martes 15 de Agosto de 2006, 21:27
Hola, que tal.
Podrias utilizar la función sprintf, lo que te hace esta es guardar en una cadena lo que esta en el sprintf, la sintaxis es similar a la de printf.
Espero te sirva.
Hasta luego.
Título: Re: Como Converir Un Float A Una String?
Publicado por: Geo en Miércoles 16 de Agosto de 2006, 00:06
Código: Text
float numero = 12.3456;
Con sprintf:
Código: Text
#include <iostream>
#include <cstring>
...
char cadenaC[ 128 ];
sprintf( cadenaC, "Float: %.4f", numero );
std::string s( cadenaC );
std::cout << "La cadena es: " << s << std::endl;
Con streams de strings (recién le estoy echando un vistazo):
Código: Text
#include <iostream>
#include <sstream>
...
std::ostringstream ostr;
ostr << numero;
std::string s = "Float: ";
s += ostr.str();
std::cout << "La cadena es: " << s << std::endl;
En ambos casos la salida sería:
Citar
La cadena es Float: 12.3456
Saludos, JJ (Geo).
Título: Re: Como Converir Un Float A Una String?
Publicado por: SteelX en Miércoles 16 de Agosto de 2006, 01:00
Bueno ya te dijeron muchas formas. de todas maneras aki esta otra
Código: Text
#include<iostream>
#include<sstream>
void main(){
float f_num=10.999900f;
stringstream floatstring;
floatstring<<f_num;
cout<<floatstring.str();
system("pause");
}
Título: Re: Como Converir Un Float A Una String?
Publicado por: ifmaster en Miércoles 16 de Agosto de 2006, 01:11
Muchas gracias a todos por vuestra ayuda, supongo que no me queda otra que utilizar las cadenas de C :P, la verdad es que poca cosa uso de C, y trabajar con STL es muy comodo, pero bueno, muchas gracias de nuevo.