C ++验证消息

时间:2016-08-08 12:07:54

标签: c++

输入多个字符后,我收到多次错误消息。例如:“1300412”。它似乎把输入带到循环,所以它一直显示“无效输入”。 如何修复它让它只在输入错误的输入后只显示一次“无效输入”。

这是我的代码,请帮助我。

void main(){
char option;

do{

    system("cls");
    cout << " Select Function: " << endl;
    cout << "(a) Asset Depreciation." << endl;
    cout << "(b) Printing Charge." << endl;
    cout << "(c) Packaging Program." << endl;
    cout << "(q) Exit." << endl << endl;
    cout << "Please enter your option:";
    cin >> option;
    option = toupper(option);
    if (option == 'A'){
        Asset_Depreciation();
    }
    else if (option == 'B'){
        Printing_Charge();
    }
    else if (option == 'C'){
        Packaging_Program();
    }
    else if (option == 'Q'){
        cout << "Thanks For Using" << endl;
        system("pause");
    }
    else{
        cout << "Invalid input!!! Please enter again." << endl;
        cin.clear();
        cin.ignore();
        system("pause");
    }
} while (option!='Q');

}

2 个答案:

答案 0 :(得分:0)

代码

@customers = Customer.all
@customers = @customers.between(params['start'], params['end']) if (params['start'] && params['end'])

根本没用。根据参考文件: clear methodignore method

第一种方法是指流的内部状态。

第二种方法,在没有参数的情况下使用,只是忽略输入流中的一个字符

我建议您以这种方式使用它:

cin.clear();
cin.ignore();

在开头包括限制标题:

cin.ignore(numeric_limits<streamsize>::max());

这样你就可以忽略并清除流中尚未读取的所有剩余字符。

答案 1 :(得分:0)

由于option的类型为char,因此它不能包含多个字符。这就是您收到错误消息的原因。

如果您想输入string作为输入。

std::string var; // This will accept input this white space or \n occurred. 
std::cin >> var;

如果您想输入一行string

std::string var;
getline(std::cin,var); // This will accept input until \n has not entered.

之后你所有的比较都会像这样

if (option == "A"){
    Asset_Depreciation();
}