Con el siguiente codigo podemos concatenar valores float o double a una cadena de tipo string de la stl indicando el numero de decimales que queremos mostrar e indicando la longitud del numero.
#include <iostream>
#include <sstream>
#include <iomanip>
stringstream ss;
float flot=12345.123456789;
ss.flags(std::ios::fixed); //write floating point values in fixed-point notation
ss.precision(3); //indicar el numero de decimales a mostrar
ss.width(0); //Especificar el ancho qeu va a ocupar todo el numero, Se rellena con espacios en blanco, Si ponemos un numero inferior a la longitud del numero, imprime al menos todos los numeros enteros mas los decimales indicados en precision.
ss << "numero:" << flot << endl;
cout << ss.str() << endl;
La salida de este codigo es:
numero:12345.123
Si queremos añadir varios numero al stringstream tambien se puede hacer estableciendo el formato con las funciones de la std de iomanip. Esto se puede hacer todo en una misma linea con :
ss << std::setw(2) << std::setfill('0') << std::setprecision(0) << numero1;
ss << numero2;
ss << numero3;
Otras funciones para formatear la salida de un stringstream es:
setfill(char): caracter de relleno hasta completar el width indicado
setbase(std::oct | std::dec | std::hex): define la base a la que convertir el numero
setw(num): numero de caracteres que ocupará el numero impreso. Los que falten se rellenan con caracteres en blanco y con el caracter indicado en setfill
setiosflags(): establece el formato de los flags. Ver los flags aqui
resetiosflags(): resete un flag previamente establecido
setprecision(): establece el numero de decimales a mostrar. se rellena con ceros.
Todas estas funciones esta definidas en la libreria iomanip
El metodo str del stringstream devuelve un std::string
No hay comentarios:
Publicar un comentario