【问题标题】:Ending input data from keyboard by hitting spacebar, not enter key c/c++通过按空格键从键盘结束输入数据,而不是输入键 c/c++
【发布时间】:2018-06-15 23:27:23
【问题描述】:

我想通过键盘输入一个字符串,通常按回车键结束,但现在我想通过按键空间结束 前任 : 输入你的名字:Koichen(按回车键('\n')结束) 输入你的名字:Koichen(按空格键(' ')结束) 我使用 c/c++ 进行编程 任何提示将不胜感激

【问题讨论】:

  • 您需要捕捉每个输入的按键并在遇到空格时执行操作。
  • 标准 C++ 不可能。您的操作系统需要一个特殊的库。此外,我认为这不值得麻烦;如果您需要对控制台进行如此精细的控制,那么您很快就会发现无论如何您都需要一个完整的 GUI。
  • 执行此操作的方法取决于您运行的操作系统。你是在 windows、linux 还是其他?

标签: c++ c input console keyboard


【解决方案1】:

你猜怎么着,标准输入还没有跨平台标准化。

无论哪种方式,您都需要合并输入字符,直到读取一个空格。


请注意这里没有键盘的概念,您阅读的是input,例如可以来自管道。

【讨论】:

  • “标准输入尚未跨平台标准化” - 这是一个非常具有误导性的句子。当然,标准输入标准化的!只是键盘或控制台没有标准化,标准输入是一个抽象概念,而键盘和控制台已经是非常具体的东西。运行 C++ 程序的计算机不需要连接键盘或屏幕,但仍然可以使用 std::cinstd::cout 进行输入和输出。
  • 这取决于我们谈论的标准化水平。仅仅存在依赖于平台的方式来配置可选行为(即缓冲)我会说这不是一个固定的标准。
  • 你在哪里画线?鼠标输入也是“标准输入”吗?
  • 我不会对此提出异议,因为这是一个非常模糊和主观的意见。但我想说cin/cout是标准接口,但不同平台上的输入/输出没有标准化。考虑转义序列,它会在某些环境中向西 - 你调用相同的函数,得到不同的结果。
  • 那么如何解决这个问题??我可能会想到我们可以通过_getch(); 获取每个字母并推入一个字符串,但我不能对 unicode 做同样的事情,因为我得到的每个字母都会生成另一个字母。例如:dd -> đ, uw -> ư, ...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
  • 1970-01-01
  • 2013-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多