按Enter键时停止将值输入数组

时间:2014-03-28 19:23:02

标签: c++ arrays

大家好,我在尝试实现程序的回车键部分时遇到了麻烦

int list[50];
int i = 0;
while (/*enter key has not been pressed*/&& i < 50){
  cin>>list[i];
  i++;
  }

它应该如何工作,它将采用由空格分隔的整数并将它们存储到数组中。当按下回车键时,它应该停止接受输入。

PS我在手机上发布这个,这就是我无法正确格式化文本的原因。如果语法有任何问题,可能只是忽略设置,因为我只关心“回车键”部分。

2 个答案:

答案 0 :(得分:1)

你可以使用一个字符串流,基本上你把整行读成一个字符串,然后你开始从那个字符串读取整数到你的数组。
当你按Enter键时,读取一个字符串将会终止,所以我认为这对你有用

#include <iostream>
#include <string>
#include <sstream>

using namespace :: std; // bad idea, I am just lazy to type "std" so much
int main (){


    const int arrSize = 5;

    int arr [arrSize] = {0}; //initialize arr zeros
    string line;
    getline(cin,line);


    cout <<"you entered " << line<<endl; // just to check the string you entered
    stringstream ss (line);

    int i = 0;
    while ( ss>>arr[i++] && i < arrSize); // this might look a bit ugly


    for (int i =0; i < arrSize; i++) // checking the content of the list
        cout<<arr[i]<<" ";

    getchar();


    return 0;



}

请注意,不会测试用户的错误输入(如字母而非数字)。

答案 1 :(得分:0)

这里的关键是使用break关键字。

int list[50];
int i = 0;
int input;
while (i < 50){
  cin >> input;
  if(input == '\n') break;
  list[i] = input;
  i++;
}

我猜你是初学者,所以将intchar进行比较对你来说可能有点奇怪。基本上,所有chars也是ASCII形式的int