在C/C++中,如何在stdout中编辑某个"坐标"?

Sam*_*s33 2 c c++ terminal

我最近一直在使用Vim,我想知道程序如何设法改变终端中某些位置的角色.例如,使用:rc时,它用c替换光标下的字符.

我还看到了类似的事情,Homebrew会在屏幕上打印一个进度条,并在必要时进行更新.

这是如何在C/C++中完成的?

Chr*_*phe 5

在C++中没有标准的方法.

它是由操作系统相关的lbiraries完成的,例如Unix/Linux世界中的curses和类似的库(ncurses).其中一些库已经跨平台移植(例如:PDCurses)

对于非常简单的事情,例如进度条或计数器,只要你保持在一行,就有在输出中使用"\ r" (回车)的技巧,将光标放回到开头的当前行.例:

for (int i = 0; i < 100; i++) {
    cout << "\rProgress: " << setw(3) << i;
    this_thread::sleep_for(chrono::milliseconds(100));
}
Run Code Online (Sandbox Code Playgroud)