我有一个小问题,我不确定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>
-------------
如果这不可能,请您指出一些可能用于实现此目的的库的方向吗?
答案 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");
}