2016-10-21 4 views
1

私はBoost.Asioを使用してIRCBotを書くことについてだと私は関数GETMSG持た:STDを使用しているとき、私の主な機能にはC++出力なし、boost.asio

std::string getMsg() 
{ 
buffer.clear();   //make sure buffer is empty 
buffer.resize(512);  //make sure it's big enough for 512char 
socket.read_some(boost::asio::buffer(&buffer[0],buffer.size())); 
std::size_t pos = buffer.find("PING :"); 
if(pos != std::string::npos) 
{ 
sendMsg("PONG :" + buffer.substr(pos + 6)); 
} 
return buffer; 
} 

を:: coutの< <テキスト。私は出力を得るが、STDをしようとしたとき:: coutを< <「こんにちは」、何も起こらていないようにみえ:

while(true) 
{ 
std::string Text = Test.getMsg(); 
std::cout << Text;  //OUTPUT 
} 


while(true) 
{ 
std::string Text = Test.getMsg(); 
std::cout << "TEST";  //NO OUTPUT ---- WHY? 
} 
+0

これが機能するかどうかを確認してください:std :: cout << "TEST:" << Text; – MayurK

答えて

0

あなたが標準出力をフラッシュしていないので、あなたが最も可能性が高いについて尋ねているエラーが発生します。std::cout << "TEST" << std::flush;このboost :: asioとは関係ありません。

しかし、あなたのasioコードにもエラーがあります:あなたは、単一の読み込み呼び出しの中で受け取らないかもしれない単一の読み込み呼び出しの中に、TCPがどのように働くかという事実のためにそこにPING :を探しています。パケット)。それがUDPソケットなら動作します。