2
爲什麼cout必須在cin開始閱讀之前刷新?他們不是不同的緩衝區?我可以將輸入讀入緩衝區,同時將其放在輸出緩衝區(沖洗前)。2個不同的緩衝區。我很困惑。在閱讀使用cin的輸入之前刷新cout ..爲什麼?
爲什麼cout必須在cin開始閱讀之前刷新?他們不是不同的緩衝區?我可以將輸入讀入緩衝區,同時將其放在輸出緩衝區(沖洗前)。2個不同的緩衝區。我很困惑。在閱讀使用cin的輸入之前刷新cout ..爲什麼?
典型的例子是這樣的:
std::cout << "Enter your name: ";
std::string name;
std::cin >> name;
你想看到提示輸入之前,這就是爲什麼這兩個流綁在一起。
它不需要刷新。默認情況下,流是tied
在一起,這樣,當你做這樣的事情:
cout << "Enter your name:";
cin >> name;
出現的提示輸入開始之前 - 這僅僅是一個方便的特性。但是,您可以解開它們:
cin.tie(static_cast<ostream*>(0));
接下來在cin上執行輸入前,不會(必然)刷新cout。
如果我想在緩衝區中保留'輸入你的名字:'而不顯示它,同時我想閱讀嗎? – yapkm01 2010-04-24 14:19:59
@ yapkm01就像我說的 - 解開它們看起來不太可能你真的想這樣做,但是 – 2010-04-24 14:21:48
cool Thx a zillion :) – yapkm01 2010-04-24 14:24:05