Gli stream sono generalmente abbastanza sicuri. In alcune circostanze, possono essere lenti e/o goffi. Lento, deriva principalmente dal fatto che impongono alcuni strati extra tra il tuo codice e il sistema operativo e, in circostanze errate, questi livelli possono aggiungere un sovraccarico. La goffaggine è per lo più paragonata alla stampa di C, non all'uso diretto di qualcosa come WriteFile (che non supporta affatto la formattazione). Ad esempio, tuttavia, prendere in considerazione:
printf("%2.2x", ch);`
a
std::cout << std::hex << std::setw(2) << std::setprecision(2) << std::setfill('0') << ch;
std::cout << setfill(' ');
Quindi prendere in considerazione il fatto che se vi preoccupate per i18n, printf
sta utilizzando una stringa che è facile da leggere in da una fonte esterna, dove la Lo stream C++ sta incorporando tutta la formattazione nella struttura del codice, quindi quasi ogni cambiamento nella formattazione richiede la riscrittura del codice, la ricompilazione e il ricollegamento.
CreateFile, ReadFile
, ecc, consentono inoltre un numero di cose come file mappati in memoria e lettura e scrittura sovrapposti che non sono affatto supportati da iostreams. Se la situazione ti consente di farne un buon uso, gli iostreams spesso non saranno competitivi.
fonte
2010-01-21 18:09:13
La libreria boost :: format è un'altra alternativa che fornisce una formattazione di tipo print-safe: http://www.boost.org/doc/libs/1_41_0/libs/format/doc/format.html – Void
Uso frequente di 'boost :: format' potrebbe influire negativamente sulla tua performance. In un progetto che utilizza Boost 1.33, ho dovuto smettere di usare boost :: format a causa di problemi di prestazioni (misurati con un profiler). –
Grazie, è bello saperlo. In realtà non ho mai provato ad aumentare, ma visto che è così popolare dovrei probabilmente verificarlo qualche volta. –