gpt4 book ai didi

c++ - 在 C++ 中验证字符串和日期输入?

转载 作者:行者123 更新时间:2023-11-28 03:54:40 24 4
gpt4 key购买 nike

我今天才开始学c++。我正在做一些简单的注册程序。我想验证输入。我在验证全名和出生日期时卡住了。这是我的要求:

  • 全名:我只想检查它是否为空且没有标点符号
  • date_birth:我知道这有点棘手。但是,如果我可以验证输入是否有效,例如:月份(1-12)、日期(1-30)和年份(不超过当年)就足够了。

有什么快速的方法吗?

编辑:

我尝试用谷歌搜索字符串验证,我仍然遇到很多错误。这是我当前的代码:

string fullname;
do{
cout << endl << "Please enter your fullname";
cin >> fullname;
} while(!ispunct(fullname));

我的错误信息是:

XXXX: no matching function for call to `ispunct(std::string&)' 

我已经包含了库,这是检查字符串输入的正确方法吗?您通常如何进行验证?

编辑 2:

bool valid;
string fullname;
do{
valid = true;
cout << endl << "Please enter your fullname";
cin >> fullname;
string::iterator it;

for ( it=fullname.begin() ; it < fullname.end(); it++ )
if(ispunct(*it)){
valid = false;
}
} while(!ispunct(fullname));

奇怪,我输入:“!!!”,还是绕过。我的代码有问题吗?

最佳答案

好吧,我会尽力引导您朝着正确的方向前进。首先,为了验证字符串,您需要逐个字符地对其进行迭代。您可以使用迭代器和 for 循环来做到这一点。字符串类有一个 begin()end() 方法,您可以使用它们遍历整个字符串并检查每个字符。

一旦您遍历字符串,您需要做的就是根据您的要求编写代码来验证它。为确保没有标点字符,您可以使用 std::ispunct 函数,它会告诉您字符是否为标点字符。如果您发现任何标点符号,只需将其视为错误。

您的第一个要求是检查字符串是否为空,这是微不足道的。字符串类有一个 empty() 方法,如果字符串为空则返回 true。

验证生日比较棘手。这就是正则表达式的用途。不幸的是,C++ 没有对正则表达式的内置支持(至少在下一版本的标准之前是这样)。如果您有兴趣,Boost同时有一个很好的正则表达式库。

否则,您需要遍历字符串并验证每个字符。确保字符串以形成与月份名称相对应的单词的字符开头,然后确保后面有括号,等等。您需要决定如何处理字符之间的空格。这会很棘手,但这是熟悉 C++ 的一个很好的练习。

关于c++ - 在 C++ 中验证字符串和日期输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4118954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com