很多地方都看到這樣一個描述“cout有一個緩存區,當用cout向輸出流中插入待輸出內容時,這些待輸出內容並不是立即就被送到輸出設備了,而是先存入到這個緩存區中,當cout遇到endl或者緩存區滿的時候才會向屏幕輸出”請問這句話是對的嗎?我怎麼總感覺不對勁啊,感覺有矛盾啊,如果這個說法是正確的,那麼是不是說當執行輸出語句cout<<a時如果緩存區沒有滿或者沒有遇到endl的時候就不能進行輸出了嗎?是這樣理解嗎?求解啊!!!
在Unix下的C語言用select函數就可以判斷有無數據。
Windows下網絡也可用select,鍵盤輸入則用_kbhit函數。
MSDN裡的例子:
#include
#include
int main( void )
{
/* Display message until key is pressed. */
while( !_kbhit() )
_cputs( "Hit me!! " );
/* Use _getch to throw key away. */
printf( "\nKey struck was '%c'\n", _getch() );
}
也可以參考http://bbs.csdn.net/topics/390497761