C++ boost::posix_time::from_iso_字符串允许错误输入

C++ boost::posix_time::from_iso_字符串允许错误输入,c++,boost,boost-date-time,C++,Boost,Boost Date Time,奇怪的是 std::cout << boost::posix_time::from_iso_string("20120927T062299");// 99 seconds! std::cout不同的库实现者对于什么应该导致错误以及错误的严重性有不同的想法 简单的答案是,如果字符串来自用户输入,在将其提供给任何需要正确格式字符串的函数之前,请自己检查它。无论如何,这通常是个好主意。在这种情况下,正则表达式检查相当简单。不幸的是,没有正则表达式可以检查2012.02.29是否为有效日期

奇怪的是

std::cout << boost::posix_time::from_iso_string("20120927T062299");// 99 seconds!

std::cout不同的库实现者对于什么应该导致错误以及错误的严重性有不同的想法


简单的答案是,如果字符串来自用户输入,在将其提供给任何需要正确格式字符串的函数之前,请自己检查它。无论如何,这通常是个好主意。在这种情况下,正则表达式检查相当简单。

不幸的是,没有正则表达式可以检查2012.02.29是否为有效日期。我可以自己重新实现解析,但它违背了ISO标准和实现它们的库函数的全部目的……在对
from_string()
实现进行一些调查后,我发现只允许解析不正确的值的时间部分。所以,我之前的观点不成立,是的,时间部分可以很容易地被重新定义。