¿Cómo formateo mi salida en flujos de C++ para imprimir tablas de ancho fijo alineado a la izquierda? Algo así comoDiseño de tabla usando std :: cout
printf("%-14.3f%-14.3f\n", 12345.12345, 12345.12345);
poducing
12345.123 12345.123
¿Cómo formateo mi salida en flujos de C++ para imprimir tablas de ancho fijo alineado a la izquierda? Algo así comoDiseño de tabla usando std :: cout
printf("%-14.3f%-14.3f\n", 12345.12345, 12345.12345);
poducing
12345.123 12345.123
Incluir el encabezado estándar <iomanip>
y se vuelven locos. Específicamente, el manipulador setw
establece el ancho de salida. setfill
establece el carácter de relleno.
std::cout << std::setiosflags(std::ios::fixed)
<< std::setprecision(3)
<< std::setw(18)
<< std::left
<< 12345.123;
que desea utilizar manipuladores de flujo:
http://www.deitel.com/articles/cplusplus_tutorials/20060218/index.html
También puede considerar la funcionalidad más amigable proporcionada por uno de estos:
escritura de la memoria, pero debe haber algo en este sentido:
// Dumb streams:
printf("%-14.3f%-14.3f\n", 12345.12345, 12345.12345);
// For IOStreams you've got example in the other answers
// Boost Format supports various flavours of formatting, for example:
std::cout << boost::format("%-14.3f%-14.3f\n") % a % b;
std::cout << boost::format("%1$-14.3f%2$-14.3f\n") % a % b;
// To gain somewhat on the performance you can store the formatters:
const boost::format foo("%1$-14.3f%2$-14.3f\n");
std::cout << boost::format(foo) % a % b;
// For the Loki::Printf it's also similar:
Loki::Printf("%-14.3f%-14.3f\n")(a)(b);
// And finally FastFormat.Format (don't know the syntax for decimal places)
fastformat::fmtln(std::cout, "{0,14,,<}{1,14,,>}", a, b);
Además, si va a pegarse con cualquiera de estas librerías de formato, examine minuciosamente sus limitaciones en contexto de expresividad, portabilidad (y otra dependencia de biblioteca), eficiencia, soporte de internacionalización, seguridad de tipo, etc.
+1 para literalmente enloquecer. – Anonymous
No olvide 'std :: left' para la alineación a la izquierda. –
¿Hay alguna buena razón por la cual 'printf()' no sería una buena opción? –