不确定标题是否措辞正确,但我想问的是你如何用换行符号表示数组的输入结束。以下面的代码为例。无论你在得分[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;
}
答案 0 :(得分:1)
要检测“没有给出输入”,您需要将输入读作输入行(字符串),而不是使用cin >> x;
- 无论x
的类型是什么,{ {1}}将跳过“空格”,例如换行符和空格。
将输入作为行读取的麻烦在于您必须将输入“解析”为数字。您可以使用cin >> x;
或类似的方法来执行此操作,但与现有相比,这是相当多的额外代码。
然而,解决此类问题的典型方法是使用“哨兵”值 - 例如,如果您的输入总是大于或等于零,则可以使用std::stringstream
作为哨兵。所以你输入
-1
这会减少额外代码的数量相对较小 - 只需检查输入是否为1 2 3 4 5 -1
,例如
-1
(这也将检测文件结尾,因此您可以根据您的平台使用CTRL-Z或CTRL-D结束输入)