2012-01-02 1 views

Répondre

5

Vous pouvez le faire:

ostream objOstream (cout.rdbuf()); 
objOstream << "Test sentence goes to console\n"; 

Ou vous pouvez faire ceci:

ostream & objOstream = cout; 
objOstream << "Test sentence goes to console\n"; 

Le second ne fonctionne pas avec streambuf, plutôt que vous venez de créer une référence à la std::cout, et utilise la référence.

+0

:) Merci, mais ce n'est pas 'rdbug'' rdbuf'. de toute façon, cela signifie que nous devons utiliser cout indirectement? Alors, comment qdebug écrit-il en console? –

0

Ce n'est pas le cas. Vous écrivez simplement à cout ou . Ces flux sont arrangés par le shell et vous ne pouvez pas faire plus - votre programme ne peut pas créer un nouveau canal vers la console. Pourquoi ne pouvez-vous pas utiliser cout ou cerr?

+0

qDebug n'écrit-il pas dans le flux? Si cela peut le faire, pourquoi ne puis-je pas? –

+0

Vraisemblablement, il écrit juste 'cerr'. Vous pouvez tester cela en redirigeant la sortie standard et l'erreur standard vers des fichiers ou autre chose, puis en utilisant qdebug. qdebug devrait être exporté là où est l'erreur standard, parce qu'il accède simplement à std :: cerr à moins qu'il ne soit explicitement donné un handle ou une chaîne de fichier. – Dan

+0

Vraisemblablement, il teste son programme d'écriture de fichiers. C'est pourquoi j'ai creusé ça, de toute façon. – linkhyrule5

Questions connexes