我有一个小程序,我要求用户输入并将它们存储到数组中。
我的问题是,如果用户输入超过3个数字,请说ex:-3 7 2 1然后点击进入
前三个将存储在数组中,但最后一个数字将作为选择输入,因此它将选择选项1.
如果用户输入的数字超过3个,我该如何防止这种情况?
代码
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main() {
int select;
int array[3];
for (int i = 0; i < 3; i++)
{
cin >> array[i];
}
cout<<"select from the following options \n";
cout<<"enter option 1 to print index 0\n";
cout<<"enter option 2 to print index 1\n";
cout<<"enter option 3 to print index 2\n";
cin >> select;
if (select == 1)
{
cout <<"\nprinting index 0 with a value of: "<<array[0];
}
else if (select == 2)
{
cout <<"\nprinting index 1 with a value of: "<<array[1];
}
else if(select == 3)
{
cout <<"\nprinting index 2 with a value of: "<<array[2];
}
else
{
cout<<"invalid selection";
exit(1);
}
return 0;
}
当用户输入3个以上的数字并按下
时的图片http://i1154.photobucket.com/albums/p529/strk44/code/picEX.png
答案 0 :(得分:0)
使用std::getline()
一次将整行输入读入std::string
,然后将空格分隔的数字解析为各个变量。
答案 1 :(得分:0)
像这样冲洗cin缓冲区:
在fflush(标准输入);
cin >> select;
之前
cout&lt;&lt;“输入选项3以打印索引2 \ n”;
<强> fflush(标准输入); 强>
cin&gt;&gt;选择;
答案 2 :(得分:0)
在阅读前三个输入后,您使用std::ifstream::ignore
将所有剩余数据跳到下一个换行符。
for (int i = 0; i < 3; i++)
{
std::cin >> array[i];
}
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');