Visual Studio 2008 でコンパイルされた次のコードがあります。
int main() {
freopen ("C:\\temp\\stdout.txt","w",stdout);
cout << "aaa" << endl;
while (true) {
string in = "";
getline(cin, in);
cout << "bbb" << endl;
if (in.find("exit") != string::npos) {
break;
}
}
fclose (stdout);
return 0;
}
Notepad++ で "C:\temp\stdout.txt" を開き、ファイルの変更を監視します (ファイル タブを手動でクリックして更新します)。
それを実行するとき:
すぐに「aaa」と表示されますが、これは正しいです。
次に「asdf」と入力しますが、「bbb」は出力またはフラッシュされません。
次に「asdf」と入力しますが、「bbb」は出力またはフラッシュされません。
次に「asdf」と入力しますが、「bbb」は出力またはフラッシュされません。
次に「exit」と入力すると、出力は次のようになります。
aaa
bbb
bbb
bbb
bbb
次のフラッシュ方法を試しましたが、文字列をすぐにフラッシュできるものはありません。
cout << "bbb" << endl << flush;
cout << "bbb" << endl;
cout.flush();