2014-11-24 87 views
0

我有一個小程序,我要求用戶輸入並將它們存儲到數組中。防止用戶輸入在C++中做選擇?

我的問題是,如果用戶輸入更多然後3個數字可以說例如:-3 7 2 1然後點擊進入

第一3將被存儲在數組中,但最後一個號碼將被作爲選擇輸入所以然後它會選擇選項1.

我會如何防止這種情況下,用戶確實輸入超過3個數字?

代碼在這裏當用戶輸入更多然後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; 
} 

產品圖

http://i1154.photobucket.com/albums/p529/strk44/code/picEX.png

+1

只要採取3個輸入,並跳過到行的結束 - '的std :: cin.ignore(的std :: numeric_limits <性病:: streamsize可> :: MAX(), '\ n');' – 2014-11-24 02:01:06

+0

我真的希望我能讓你成爲最好的答案。你的工作很完美! – Bex 2014-11-24 08:16:23

回答

0

使用std::getline()輸入的整條生產線,在一次讀入std::string ,然後將空白分隔的數字解析爲單個變量。

0

只是刷新CIN緩衝器是這樣的:

fflush(標準輸入);

cin >> select;

COUT之前

< < 「輸入選項3,打印索引2 \ n」 個;

fflush(stdin);

cin >> select;

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