2

我一直在阅读,我发现我可以使用 getch() 来获得击键。我所看到的是,这被认为是不好的做法,但是我看到了相互矛盾的意见。我正在为我的班级编写一个控制台应用程序,并且希望能够根据按下的箭头键在屏幕上移动一个标记(*)。getch() 是解决这个问题的正确方法,还是有更好的方法来捕获它。我希望他们能够按箭头,而不需要按 Enter 或任何东西。我不需要特别的代码,我只是想知道是否应该避免 getch(),如果是,那么有哪些函数可以实现这种想法。

4

4 回答 4

1

getch()不是 C 或 C++ 中的标准函数。它存在于一些过时的编译器中,例如Turbo C,并且它也在某些常用库中定义,例如curses,但无论如何它是一个 C 函数,而不是 C++。对于 C++,您可能应该坚持使用标准 C++ I/O。如果由于某种原因你不能这样做,那么选择最便携的选项,例如curses。

于 2010-11-18T21:06:30.977 回答
1

您想以非规范模式从终端读取。使用 tcsetattr() 关闭 ICANON 标志。

于 2010-11-18T21:12:58.333 回答
0

如果有效,请使用 getch()。为什么不?

于 2010-11-18T21:15:07.077 回答
0

在 Windows 上,您可以使用 pdcurses:http ://pdcurses.sourceforge.net/ ,它与 ncurses 兼容。

于 2010-11-19T01:38:14.267 回答