cout
scrive sempre sul flusso di output standard ( stdout
). Se si desidera che l'output venga reindirizzato altrove (ad esempio una finestra grafica), sarà necessario reindirizzare l'output a un altro programma o thread responsabile della gestione dell'interfaccia grafica. Ci sono molti modi in cui questo può essere fatto, ma dipende in qualche modo dal sistema operativo.
Per impostazione predefinita, su Linux è possibile osservare lo stdout di entrambi i programmi di console e grafici semplicemente eseguendolo da un terminale. In realtà, non c'è distinzione netta tra "console" e programmi "grafici" in Linux.
Su Windows è piuttosto diverso: console e programmi grafici sono distinti *. I programmi grafici non hanno un terminale assegnato per impostazione predefinita, quindi i messaggi stdout di solito finiscono nell'oblio. C'è un po 'di trucco richiesto allocare un terminale per programmi grafici (in modo che si comportino in modo simile a Linux).
(Non posso commentare sui Mac perché non li uso.)
Puoi eseguire reindirizzamenti esternamente tramite la shell. Qui presumo una shell di tipo Bourne. ** Supponiamo che tu voglia eseguire un programma my-simulation
e alimentare il suo output ad un altro programma my-display
, che presumibilmente legge dallo standard input ( stdin
). Se si esegue il programma così com'è, l'output verrà scaricato nel terminale come al solito:
./my-simulation
Puoi stabilire una pipe eseguendo quanto segue nella shell:
./my-simulation | ./my-display
O se invece vuoi scrivere su un file,
./my-simulation >my-output-file.txt
Naturalmente, questi possono essere tutti fatti in C / C ++, ma con più lavoro. Se vuoi che stdout
venga reindirizzato a un file, puoi utilizzare freopen dallo standard biblioteca. Il reindirizzamento di stdout
a un altro processo è leggermente più difficile in quanto è necessario utilizzare API specifiche della piattaforma per gestire i descrittori di file e piping di processi.
[*] Nel linguaggio Windows, i programmi grafici sono chiamati Applicazioni Windows . Puoi trovare ulteriori informazioni sulle varie differenze tra questi due tipi di programmi su MSDN .
[**] Puoi anche fare qualcosa di simile con il prompt dei comandi su Windows, ma con una sintassi leggermente diversa.