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
È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top