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

时间:2015-06-05 22:42:10

标签: c++ cin difference

使用 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);
}

2 个答案:

答案 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做同样的事情。这是你的进入机制(例如你的终端程序)处理空间并以不同的方式输入:终端通常不会将任何东西传递给你的程序,直到你输入。

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