C++如何覆盖控制台中的字符,将回车符返回行首似乎不起作用
我的问题是,如何让数字 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 5 4 3 2 1
My question is, how do I get the numbers 10 - 0 to print out on the same line, overwriting each other using either a WIN32 or GNUC compiler in a simple manner like my code below:
This is what I have so far:
#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
But this only prints:
10
9
8
7
6
5
4
3
2
1
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我做了一些非常琐碎的修改(主要是为了清理它并使其更具可读性):
这对于 VC++ 和 Cygwin 来说都工作得很好。如果它在 mingw 下不起作用,对我来说听起来像是一个实现问题。
I did some really trivial modification (mostly just to clean it up and make it more readable):
This worked fine with both VC++ and Cygwin. If it's not working under mingw, it sounds to me like an implementation problem.
我建议您使用 ncurses 或其他库来执行此操作,没有标准化的方法。
I recommend you use ncurses or another library for this, there is no standarized way to do it.
您是否尝试过退格
'\b'
字符?Have you tried the backspace
'\b'
character?