使用换行符结束数组输入?

时间:2015-05-17 15:18:24

标签: c++ arrays cin

不确定标题是否措辞正确,但我想问的是你如何用换行符号表示数组的输入结束。以下面的代码为例。无论你在得分[6]的输入过程中输入了多少(或多或少)数字,在继续之前必须花费6。是否有一种方法可以更改它,以便数组可以存储6或100个变量,但您可以决定实际包含多少个变量值。我能想到这样做的唯一方法是以某种方式合并'\ n',这样按Enter键就会创建一个换行符并再次按Enter键表示你不想再设置任何值。或者这样的事情不可能?

#include <iostream>
using namespace std;
int main()
{
    int i,score[6],max;
    cout<<"Enter the scores:"<<endl;
    cin>>score[0];
    max = score[0];
    for(i = 1;i<6;i++)
    {
        cin>>score[i];
        if(score[i]>max)
            max = score[i];
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

要检测“没有给出输入”,您需要将输入读作输入行(字符串),而不是使用cin >> x; - 无论x的类型是什么,{ {1}}将跳过“空格”,例如换行符和空格。

将输入作为行读取的麻烦在于您必须将输入“解析”为数字。您可以使用cin >> x;或类似的方法来执行此操作,但与现有相比,这是相当多的额外代码。

然而,解决此类问题的典型方法是使用“哨兵”值 - 例如,如果您的输入总是大于或等于零,则可以使用std::stringstream作为哨兵。所以你输入

-1

这会减少额外代码的数量相对较小 - 只需检查输入是否为1 2 3 4 5 -1 ,例如

-1

(这也将检测文件结尾,因此您可以根据您的平台使用CTRL-Z或CTRL-D结束输入)