阻止用户输入在c ++中进行选择?

时间:2014-11-24 01:58:31

标签: c++ arrays input user-input cin

我有一个小程序,我要求用户输入并将它们存储到数组中。

我的问题是,如果用户输入超过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

3 个答案:

答案 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');