下面的代码在最后的gotoxy()坐标中输出文本,如果我将cin放在中间,那么它将起作用,光标位于不同的位置。如何更改每个单词的光标位置?

#include <iostream>
#include <windows.h>
using namespace std;

void gotoxy( short x, short y )
{
    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE) ;
    COORD position = { x, y } ;

    SetConsoleCursorPosition( hStdout, position ) ;
}
int main() {
    gotoxy(5,5);
    cout << "Test";
    gotoxy(10,10);
    cout << "Test";
    return 0;
}

最佳答案

您的问题是(可能)缓冲的IO。在看到换行符'\n'之前,输出流不会写入输出,输入完成(在C ++中称为绑定流),或者将std::flushstd::endl发送到输出流。

也可以通过调用std::cout.flush()进行刷新。

关于c++ - C++仅对SetConsoleCursorPosition()的最后一次调用有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53560743/

10-11 15:07