C++ 如何在C++;

C++ 如何在C++;,c++,console-application,keypress,standard-library,C++,Console Application,Keypress,Standard Library,我正在编写一个自定义控制台程序。我想让它看起来像一个真实的。所以我想用按键事件绑定一些动作 例如,当按下向上箭头时,应向用户显示先前执行的命令。我知道SDL。但我认为这不是一个标准的图书馆,是吗 标准C++库中是否包含其他替代程序?您描述的不是“控制台程序”本身,而是一个shell。 此外,您不希望处理传入事件;您更希望只从命令行读取 要做到这一点,有多种方法。Windows有。 不过,更灵活的方法是使用getline int main () { string mystr; cout &

我正在编写一个自定义控制台程序。我想让它看起来像一个真实的。所以我想用按键事件绑定一些动作

例如,当按下向上箭头时,应向用户显示先前执行的命令。我知道SDL。但我认为这不是一个标准的图书馆,是吗


标准C++库中是否包含其他替代程序?

您描述的不是“控制台程序”本身,而是一个shell。 此外,您不希望处理传入事件;您更希望只从命令行读取

要做到这一点,有多种方法。Windows有。 不过,更灵活的方法是使用getline

int main ()
{
  string mystr;
  cout << "What's your name? ";
  getline (cin, mystr);

  return 0;
}
int main()
{
字符串mystr;

cout在标准库中找不到与此相关的任何内容。它完全依赖于平台。在Windows中,您可以使用诸如获取键盘上某个键的状态之类的功能


和两个都有平台无关的事件处理。< /P>你的操作系统是什么?选择C或C++,不要标记这两个。你不能只使用标准库(<代码> C<代码>或<代码> C++ >代码>)。例如,你需要使用其他库或OS实用工具。例如,你可以使用这个库来处理Linux上的输入历史。这是OS依赖的。@ Nouy是Ubuntu 12。x。如果你能在C中做一些事情,那么显然你也可以用C++来做。是的,你可以在C和C++中做任何事情,你也可以在汇编程序中做。这并不意味着你应该增加。这个标签也是,C和C++中的事情不同,因为它们是不同的编程语言。因此,你得到的答案会有所不同,这取决于你使用的是哪一种。我们根据标签来确定。我同意<代码> GETLION>代码>是处理简单阅读的最好方法,但它不符合实际情况。stion问。不。他必须自己处理。这些只能用于输入处理、管理窗口和呈现文本(假设他从头开始制作一个完全自定义的控制台,独立于操作系统控制台)好的,我会这么做的。所以我应该继续SDL。这取决于你最舒服的。SDL有一个C API(函数,结构,指针无处不在),而SFML有C++ API(类,引用的使用,而不是指针等)。@Magtheridon96实际上,在这个场景中,我计划有两个线程,第一个线程将在getline(cin,buffer)中被阻塞,另一个线程将继续监听按键。一旦用户按下任何一个(向上或向下)键,它将打印以前使用过的命令,而且它将填充缓冲区(这里有疑问,在这个场景中,cin能不能做到这一点)的第一个线程。当用户点击回车键时,第一个线程就会醒过来并完成它的工作。这是一个好方法吗?或者你能给我建议一个更好的方法吗?它可以很好地工作。我想不出其他很多方法来解决这个问题。