使用 SPACE 和 ENTER 键在cin
中输入整数数组的值序列有什么区别?
例如 -
如果我必须在数组中输入一系列数字,并在用户在值链中输入0
后立即停止接收输入。如果在键盘上按 ENTER 以在输入期间分隔每个数字,则它可以正常工作,而在使用 SPACE 时,它不会停止输入过程。可以通过某种方式修改以下代码,以便它也适用于 SPACE 吗?
#include<iostream>
using namespace std;
int main()
{
int arr[10];
int i=-1;
do{
cin>>arr[++i];
}while(arr[i]!=0);
i=-1;
do{
cout<<"\n"<<arr[++i];
}while(arr[i]!=0);
}
答案 0 :(得分:1)
&#34;如果在输入过程中按下回车键分隔每个数字,它可以正常工作,而在使用空格键时,它不会停止输入过程。&#34;
ENTER 触发器使用cin
从输入终端读取输入流,而 SPACE 则不会。
通常来自终端的 ENTER 会展开以获得来自提示的输入以及发送的'\n'
或'\r'
'\n'
字符序列,并且&#39;被视为投入的一部分。
&#34;以下代码是否可以通过某种方式进行修改,以便它也适用于空格键?&#34;
不,除非您设法让终端使用 SPACE 键向您的程序发送输入。
最后,如果输入
,解析并不重要1 2 3 4 >ENTER
或
1 2 >ENTER
3 4 >ENTER
std::istream
将透明地处理接收' '
,'\t'
或'\n'
字符(请参阅std::isspace()
)。当按下 ENTER 键时,终端仍会触发将这些字符发送到输入。
答案 1 :(得分:0)
空间和输入对cin
做同样的事情。这是你的进入机制(例如你的终端程序)处理空间并以不同的方式输入:终端通常不会将任何东西传递给你的程序,直到你输入。
要执行您想要的操作,您需要使用可让您与终端进行交互的库。 (或者您的终端可以配置选项来执行此操作)