【问题标题】:get char input, check if it is valid or not, if it is invalid clear whole input获取字符输入,检查是否有效,如果无效清除整个输入
【发布时间】:2016-03-28 05:00:04
【问题描述】:

我的程序以 char 形式获取输入。然后检查输入是否有效

-如果输入不是'a'或'b'或'c',则清除整个输入的输入然后再次输入(并且任何超过一个字符的输入都是无效的,即使开始或包含a或b或c字符)

示例:ab、ac、cb、abc 无效。 xa, habc 无效

所以我的问题是:例如:如果我输入 abcdef 或 123456(在此示例中输入有 6 个字符)循环转 6 次并打印“错误!无效值。再试一次”6 次。但对于任何长度超过 1 个字符的输入,它必须仅打印一次“错误!无效值。再试一次”。我认为它首先检查输入是否有效,然后是 b、c、d、e 和 f,分别。所以如果输入无效,它应该清除整个输入,然后再次输入。如果输入无效,如何清除整个输入。这是我的代码

for(bool isTypeValid=false; isTypeValid==false;){
        cout<<"type: ";
        cin>>type;

        switch(type){
            case 'a':
            case 'b':
            case 'c':
                isTypeValid=true;
                break;
            default:
                isTypeValid=false;
                cout<<"Error! Invalid type. Try again.";
                break;}
    }
int number:
cout<<"number: ";
cin>>number;

.............

编辑:我只需要使用 iostream 标头

【问题讨论】:

    标签: c++ loops char


    【解决方案1】:

    您的程序逐行接收输入。您可以使用std::getlinestd::istream::getline 阅读整行并检查第一个字符。

    【讨论】:

    • 我忘了提。我只需要使用 iostream 标头
    • operator&lt;&lt;getline 都在 istream 标头中。
    • @sinyorcem 你也不允许使用string 标头吗?
    • 是的,我只能使用 iostream 标头。并且 iostream 无法识别 getline
    • @sinyorcem 你可以使用这个版本:cplusplus.com/reference/istream/istream/getline.
    猜你喜欢
    • 2020-10-16
    • 1970-01-01
    • 2017-04-01
    • 2013-12-15
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多