gpt4 book ai didi

c++ - 在 C++ 中验证日期格式

转载 作者:行者123 更新时间:2023-11-27 22:42:58 29 4
gpt4 key购买 nike

我正在尝试通过创建流来验证一行 (01 10 2017) 上的日期格式。

        if(i%5==4){ //DATE
std::string date;
int day;
int month;
int year;
std::ostringstream oss(date);
oss >> day;
oss >> month;
oss >> year;
if (day >=0 && day <= 31){
return true;}
if (month >=01 && month <= 12){
return true;}
if (year >=1900){
return true;}
}

但是,代码无法编译。我可以做些什么来改进验证?

谢谢

最佳答案

What could I do to improve the validation?

使用经过良好测试的日期/时间库,例如 Howard Hinnant's free, open source, header-only date/time library .

bool
is_DMY(const std::string& date)
{
std::istringstream in{date};
date::year_month_day ymd;
in >> date::parse("%d %m %Y", ymd);
return !in.fail();
}

使用示例:

int
main()
{
std::cout << is_DMY("30 09 2017") << '\n';
std::cout << is_DMY("31 09 2017") << '\n';
}

哪些输出:

1
0

这表明 OP 中的第一个测试:

       if (day >=0 && day <= 31){
return true;}

将为“31 09 2017”过早返回 true。 9月只有30天。

关于c++ - 在 C++ 中验证日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46615942/

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