C ++仅对SetConsoleCursorPosition()的最后一次调用有效

时间:2018-11-30 15:48:43

标签: c++ windows

下面的代码在最后的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;
}

1 个答案:

答案 0 :(得分:5)

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

也可以通过调用std::cout.flush()来完成刷新。