我的问题是,如何将数字10 - 0打印在同一行,使用WIN32或GNUC编译器以简单的方式相互覆盖,如下面的代码:
这是我到目前为止所做的:
#include <iomanip>
#include <iostream>
using namespace std;
#ifdef __GNUC__
#include <unistd.h>
#elif defined _WIN32
#include <cstdlib>
#endif
int main()
{
cout << "CTRL=C to exit...\n";
for (int units = 10; units > 0; units--)
{
cout << units << '\r';
cout.flush();
#ifdef __GNUC__
sleep(1); //one second
#elif defined _WIN32
_sleep(1000); //one thousand milliseconds
#endif
//cout << "\r";// CR
}
return 0;
} //main
但这仅打印:
10 9 8 7 6 五 4 3 2 1
答案 0 :(得分:4)
我做了一些非常简单的修改(主要是为了清理它并使其更具可读性):
#include <iomanip>
#include <iostream>
using namespace std;
#ifdef __GNUC__
#include <unistd.h>
#define pause(n) sleep(n)
#elif defined _WIN32
#include <cstdlib>
#define pause(n) _sleep((n)*1000)
#endif
int main()
{
cout << "CTRL=C to exit...\n";
for (int units = 10; units > -1; units--)
{
cout << setw(2) << setprecision(2) << units << '\r';
cout.flush();
pause(1);
}
return 0;
}
这适用于VC ++和Cygwin。如果它不能在mingw下工作,那对我来说就像是一个实现问题。
答案 1 :(得分:1)
我建议您使用ncurses或其他库,没有标准化的方法。
答案 2 :(得分:0)
您是否尝试过退格'\b'
字符?