在cin之前打印“ cout”?

时间:2019-09-04 20:42:47

标签: c++ visual-studio iostream

我有一个小问题,我不确定iostream代码是否可以解决这个问题,但是我仍然认为值得一问。

#include <iostream>
#include <string>

using namespace std;

string cmd;

int main() {

cout << "-------------" << endl;
cout << "command: ";
cin >> cmd;
cout << "-------------" << endl;
system("pause");
}

在用户键入cout变量之前,是否仍可以打印第三条cmd行?这样,文本字段将在上方和下方用"-"包装,如下所示:

-------------
command: <user would type here>
-------------

如果这不可能,请您指出一些可能用于实现此目的的库的方向吗?

2 个答案:

答案 0 :(得分:2)

在C ++中没有实现此目的的标准方法。

不同的终端具有自己的功能,不同的系统也具有与终端进行交互的API。

在等待输入之前,肯定必须先执行底线的输出,但是可以将输出“光标”移动到屏幕底部以外的其他位置。您可以在要定位的系统的文档中找到详细信息。

答案 1 :(得分:0)

我建议您尝试使用SetConsoleCursorPosition function来设置光标在指定控制台屏幕缓冲区中的位置。

此代码使用SetConsoleCursorPosition()将当前输出位置移至第1行第9列:

#include <iostream>
#include <string>

#include <windows.h>

using namespace std;

string cmd;

int main()
{


    cout << "-------------\n" << "command:  \n" << "-------------" << endl;


    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

    if (INVALID_HANDLE_VALUE != hConsole)
    {
        COORD pos = {9, 1 };
        SetConsoleCursorPosition(hConsole, pos);
        cin >> cmd;
    }


    system("pause");

}

enter image description here