2016-10-21 9 views
1

を実行しているとき、私はいくつかの簡単なコードを持ってcoutの列ができません:は、ブーストのIOサービスは

#include <iostream> 
#include <string> 
int main() { 
    boost::asio::io_service ioservice; 
    TCPServer server(ioservice); 
    std::cout << "hello world"; 
    ioservice.run(); 
} 

は、私は上記のハローワールドの文字列をCOUT。 service.run()に電話すると、文字列が端末に出力されていません。最後の呼び出し式を削除すると、出力が見えます。どのようなバグは、私はコールの前に叫んで何も出力されていないということです。また、TCPサーバ上で定義されたハンドラでもcoutは利用できないように見えます。では、Boost Asioを使用すると、人々はどのように標準出力にログインしますか?

+1

'endl'を使ってcoutをフラッシュするとどうなりますか? – Asu

+1

試してみてください: 'std :: cout <<" hello world "<< std :: flush;'出力バッファがいっぱいになるのを待っているかもしれません。 – Galik

答えて

4

.run()と入力する前にストリームをフラッシュしていないため、情報がまだバッファに格納されています。

std::cout << std::flush(または改行も含めてstd::cout << std::endl)を使用してください。