C++ “打印”;";在cin之前?
我遇到了一个小问题,我不确定是否有可能用iostream代码来解决这个问题,但我认为还是值得一问C++ “打印”;";在cin之前?,c++,visual-studio,iostream,C++,Visual Studio,Iostream,我遇到了一个小问题,我不确定是否有可能用iostream代码来解决这个问题,但我认为还是值得一问 #include <iostream> #include <string> using namespace std; string cmd; int main() { cout << "-------------" << endl; cout << "command: "; cin >> cmd; cout <&l
#include <iostream>
#include <string>
using namespace std;
string cmd;
int main() {
cout << "-------------" << endl;
cout << "command: ";
cin >> cmd;
cout << "-------------" << endl;
system("pause");
}
如果这是不可能的,请你指出我可能使用的一些库的方向,我可以用它来实现这个目标?
在C++中没有实现标准的方法。 不同的终端有自己的功能,不同的系统有自己的API与终端交互在等待输入之前,必须首先执行底线的输出,但是可以将输出“光标”移动到屏幕底部以外的其他位置。您可以在目标系统的文档中找到详细信息。我建议您可以尝试使用在指定的控制台屏幕缓冲区中设置光标位置 此代码使用setConsoleUrsOrPosition()将当前输出位置移动到第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");
}
#包括
#包括
#包括
使用名称空间std;
字符串cmd;
int main()
{
是的,你可以,但你必须问问自己:值得吗?你需要某种光标控制库。一些命令行允许你用转义序列移动光标。这取决于你的环境。嗨@bolov,我正在制作一个基于文本的冒险游戏,UI将由围绕文本字段的光标组成,因此,如果我能在本例中简单地找出如何实现它,我可以在构建UID时进一步实现它。你听说过吗?嗨@Eljay,我听说过,我只是努力掌握它,因为我找不到关于所有函数等的可靠文档。这是你会推荐的吗?如果是的话,我会完全承诺并研究它。这正是h现在我想要它,谢谢!我现在应该能够通过操纵光标位置来构建我的UI的其余部分了!我只有两个问题,“hConsole”得到了什么?(可能是控制台的一些参考?)if语句实际检查的是什么?hConsole:控制台屏幕缓冲区的句柄。您可以在调用时为控制台屏幕缓冲区指定安全描述符。如果函数成功,返回值是新控制台屏幕缓冲区的句柄。如果函数失败,返回值无效。\u handle\u value。if stat这是为了确保控制台屏幕缓冲区的手柄已关闭。
#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");
}