使用空格键和回车键在 cin 中输入值之间的区别?

Difference between entering values in cin using spacebar and enter key?

使用 SPACEcin 中输入整数数组的值序列有什么区别ENTER 键?

例如-

如果我必须在数组中输入一个数字序列,并在用户在值链中输入 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);
}

Space 和 enter 对 cin 做同样的事情。处理 space 和输入的是您的输入机制(例如您的终端程序):终端通常不会将任何内容传递给您的程序,直到您按下回车键。

要执行您想要的操作,您需要使用可让您与终端交互的库。 (或者您的终端可能有您可以配置的选项)

"It works correctly if the enter key is pressed to separate each number during input whereas on using the space bar it doesn't stop the input process."

ENTER 触发使用 cin 从输入终端读取输入流,而 SPACE 不会't.

通常 ENTER 从终端扩展为从提示输入加上 '\n''\r' '\n' 字符序列发送,并且它被认为是输入的一部分。

"Can the below code be modified in some way, so that it works for the space bar as well?"

不,除非您设法让终端使用 SPACE 键向您的程序发送输入。


最后,如果你输入

,对于解析来说并不重要
1 2 3 4 >ENTER

1 2 >ENTER 
3 4 >ENTER

std::istream 将透明地处理接收 ' ''\t''\n' 字符(参见 std::isspace())。当按下 ENTER 键时,终端仍会触发将这些字符发送到输入。