aspetto di una tabella utilizzando std :: cout
-
06-09-2019 - |
Domanda
Come faccio a formattare la mia uscita in flussi C ++ per stampare larghezza fissa tabelle allineato a sinistra? Qualcosa di simile
printf("%-14.3f%-14.3f\n", 12345.12345, 12345.12345);
poducing
12345.123 12345.123
Soluzione
comprende la norma intestazione <iomanip>
e impazzire. In particolare, il manipolatore setw
imposta la larghezza uscita. setfill
imposta il carattere di riempimento.
Altri suggerimenti
std::cout << std::setiosflags(std::ios::fixed)
<< std::setprecision(3)
<< std::setw(18)
<< std::left
<< 12345.123;
Si può anche prendere in considerazione la funzionalità più amichevole fornito da uno di questi:
- Boost.Format (potente, ma molto pesanti, più allocazioni di tempo e di memoria rispetto ad altri menzionati)
- Loki.SafeFormat
- FastFormat (relativamente nuovo, ma ardente libreria veloce, anche di tipo di sicurezza a differenza degli altri)
La scrittura a memoria, ma dovrebbe essere qualcosa in queste righe:
// 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);
Inoltre, se avete intenzione di attaccare con una qualsiasi di queste librerie di formattazione, esaminare a fondo i loro limiti in un contesto di espressività, la portabilità (e altre dipendenze biblioteca), l'efficienza, il supporto di internazionalizzazione, tipo di sicurezza, ecc.
Si desidera utilizzare i manipolatori del flusso:
http://www.deitel.com/articles/cplusplus_tutorials/20060218/ index.html