繁体   English   中英

验证数组C ++中的输入数据

Validate input data in an array C++

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有从以下网址取出的程序: https : //intcpp.tech-academy.co.uk/input-validation/并且工作正常,我做了一些更改,因为我需要该程序不断要求用户输入一个有效的输入,所以为什么它在其中有一段时间,但是它仅在第4次输入之后才询问4次,输入是否有效,是否正确就无所谓,有谁知道我可以解决这个问题。 谢谢

#include <iostream>
#include <string>
#include <cctype>

using namespace std;

int main () {

    cout << "Please enter name:" << endl;
    string userName;
    getline(cin, userName);

    bool rejected = false;

    while (rejected == false)
    {
        for (unsigned int i = 0; i < userName.length() && !rejected; i++)
        {

            if (isalpha(userName[i]))
                continue;

            else if (userName[i] == ' ')
                continue;

            else
            {
                cout << "Error, Please enter Patient's name again, First Name: ";
                getline(cin, userName);
                rejected = false;
            }

        }
        rejected = true;
    }

    system("pause");
    return 0;
}
2 个回复

我个人会做类似的事情

bool is_valid_username(std::string const& username)
{
    // First trim the string of all leading and trailing white-space
    trim(username);

    if (username.length() == 0)
        return false;  // Input was empty or all spaces

    return std::all_of(begin(username), end(username), [](char const ch)
    {
        return std::isalpha(ch) || ch == ' '; // Only letters and spaces are allowed
    });
}

std::string get_username()
{
    std::string username;

    do
    {
        std::cout << "Please enter username: ";
        std::getline(std::cin, username);
    } while (!is_valid_username(username));

    return username;
}

[有关trim功能,请参见此旧答案 ]

如果输入为空,所有空格或包含非字母或非空格,则get_username函数将继续永远询问用户名。

这是std::all_of的参考

这是有关lambda表达式的参考

    if (isalpha(userName[i]) || (userName[i] == ' '))
        continue;
    else
    {
        cout << "Error, Please enter Patient's name again, First Name: ";
        getline(cin, userName);
        i = -1; //Reset check name
    }

试试吧! 将unsigned int更改为int

2 如何验证输入文件中的.txt数据? C ++

目标是从.txt中获取商品名称-字符串-(.txt)和价格-双-(.txt)。 我需要检查此输入并确保其有效,如果无效,请返回1并退出程序。 我能够检查以确保输入文件已打开。 但是,我在如何检查其他数据方面处于空白。 验证被解释为一次以两个(项目/价格)为一组进行。 对于字符串值, ...

3 试图用C ++验证输入

在c ++中这个代码背后的想法是计算所有输入数字的总和。 当用户输入0时,程序应该停止。 这部分代码按照我的意图工作,但是我想要包含一个变体,它识别出一个不同于浮点数的字符,在计算中忽略它并允许用户继续输入浮点数。 此时,输入除浮点数以外的任何其他内容将停止该程序。 我知道有一个“i ...

4 验证整数输入C ++?

我使用!(cin &gt;&gt; input)来验证整数输入,但它不会捕获其他数据类型,例如浮点数。 相反,它需要第一个整数。 例如: 请输入一个数字:2.5。 我的错误信息出现在这里,它假设循环,但它取代第一个数字。 输出“2” 如何让它忽略十进制输入? ...

5 c ++使用输入数据创建数组

我的任务是输入一行数据,1 个数字表示数组将具有多少个元素,下一个数字表示它们将是哪些元素。 在输入数据之前,我不知道 3 元素或 300 数组可以有多大。 例子 Array1[5]={3,6,5,7,8} 如果我按回车,它会初始化下一个表 Board2,比如 如果他输入两次,他将停止输入数 ...

6 如何在C ++构造函数中验证输入参数?

以下示例显示了问题的关键。 我需要初始化类的const成员。 这只能在初始化列表中完成,而不能在构造函数体中完成。 如果构造函数的输入无效,也就是说,如果向量大小小于3,我想断言或抛出错误。 请告知如何在Modern C ++(11及更高版本)中实现这一目标 ...

8 c ++验证输入不起作用

我在下面写了这段代码,一切正常,除非我输入多个字符时它假设给出无效输入而不退出程序但是当我写多个字符时会发生什么,从'Q'或'q'开始它退出程序,我不希望我只想在输入“q”或“Q”时退出 ...

2016-10-05 22:05:34 1 41   c++
9 C ++验证用户输入是否为单个字符

optionTest是一个字符串,而option是一个字符。 当我输入“ ee e”之类的内容时,就会发生此问题。 尽管我忽略/清除了最后一个“ e”。 只要输入的内容不是单个字符,我就希望运行验证循环。 ...

2018-12-12 00:35:09 1 45   c++
10 具有更新/验证循环的C ++ FLTK的Fl_Input数据

FLTK是基于回调的GUI系统,但是有时我需要用户在Fl_Input小部件中输入可接受的答案,然后函数才能返回。 这似乎需要更新小部件,收集答案,然后返回答案(如果有效)。 因此,从本质上讲,我有一个名为int get_int(Fl_Input i)的函数。 此函数需要不断更新Fl ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM