2013-07-26 9 views

risposta

2

L'ostream predefinita utilizzata da std :: cout e stdio (come printf) è stdout, ma non è necessariamente così.

L'uscita potrebbe essere sempre reindirizzata all'altra destinazione. Riferimento a questo: http://www.tldp.org/LDP/abs/html/io-redirection.html

+0

Ciò significa che è possibile eseguire l'output su un dispositivo simile alla stampante mediante cout. Se possibile, puoi suggerire il modo. –

+0

@pranitkothari Sì. Il problema è ottenere il descrittore del file del dispositivo e reindirizzare cout (con un descrittore di file 1). Puoi farlo in linea di comando. Il link sopra potrebbe darti qualche idea. – lulyon

0

Per cppreference:

Sets whether the standard C++ streams are synchronized to 
the standard C streams after each input/output operation. 
8

Se la sincronizzazione è disattivata, in alcuni casi i flussi C++ saranno più veloci.

Per impostazione predefinita, tutti gli stream C++ standard sono sincronizzati con i rispettivi flussi C.

Esempio:

#include <iostream> 
#include <cstdio> 
using namespace std; 
int main() 
{ 
    cout.sync_with_stdio(false); 
    cout << "Hello\n"; 
    printf("World\n"); 
    cout << "...\n"; 
} 

uscita:

Hello 
... 
World 

Cambiare a true dà risultato di default in ordine. Uscita:

Hello 
World 
... 
+0

@POW Quindi, posso trarre conclusioni, se non in sincronia, cout/printf non può garantire l'ordine o addirittura non può garantire che le cose vengano stampate? –

+0

@pranitkothari non necessariamente, un 'endl' cambierà scenario anche con sincronizzazione disattivata – P0W

+0

@POW sicuro, ma che dire senza endl che sto chiedendo. Conosco il buffer di flush endl. Ma cosa senza. –

Problemi correlati