我根据第5章编写了一个简单的程序,列出了来自C ++ Primer第5版的5.14,据说是为了从用户那里获取输入时间并制定程序"等待"以秒为单位的那段时间。程序使用while循环执行此操作,虽然等待持续时间正确,但语句执行的顺序不在我的系统上(带有g ++编译器的Ubuntu 14.04)。我在一个cout语句中写道,应该在while循环之前发生。目前它只在while循环之后执行,尽管在我的代码中在此循环之前。我不确定如何解决这个问题...
//Program to wait a certain number of seconds
//Also introduces the "while" loop
#include <iostream>
#include <ctime>
int main()
{
using namespace std;
float seconds;
cout << "\nEnter the number of seconds you wish to wait for: ";
cin >> seconds;
cout << "\n\nStarting countdown...\a";
//clock_t is a variable type! It's in terms of system clock units though, NOT seconds
clock_t delay = seconds * CLOCKS_PER_SEC;
clock_t start = clock();
while (clock() - start < delay);
cout <<"\a and done!\n\n";
return 0;
}
输入等待秒数后得到的输出是系统闪烁光标我输入的时间,然后是&#34;开始倒计时...并完成!&#34;一次全部。有什么想法吗?
答案 0 :(得分:4)
您想要刷新cout
的缓冲区,例如:
cout << "\n\nStarting countdown...\a" << endl;
或者,如果您不想要收货,请使用:
cout << "\n\nStarting countdown...\a" << flush;
或
cout.flush();
输出后;
答案 1 :(得分:3)
输出流将缓冲其输出,直到刷新为止。您可以手动刷新它以确保在预期时看到输出:
cout << "\n\nStarting countdown...\a" << flush;
答案 2 :(得分:0)
您也可以简单地输出到cerr
而不是cout
,然后无需显式刷新,因为它会自动刷新。