Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;解析错误输入时的boost时间验证_C++_Validation_Boost - Fatal编程技术网

C++ c++;解析错误输入时的boost时间验证

C++ c++;解析错误输入时的boost时间验证,c++,validation,boost,C++,Validation,Boost,我正在学习C++并制作一个简单的应用程序,下面的代码将std::string解析为ptime: ptimePointer CsvHelper::string_to_ptime(const std::string& s, const int mode, timePointer pt) { const std::locale formats[] = { std::locale(std::locale::classic(),new boost::posix_t

我正在学习
C++
并制作一个简单的应用程序,下面的代码将
std::string
解析为
ptime

ptimePointer CsvHelper::string_to_ptime(const std::string& s, const int mode, 
    timePointer pt)
{
    const std::locale formats[] = {
        std::locale(std::locale::classic(),new boost::posix_time::time_input_facet("%d/%m/%Y H:%M:%S")),
        std::locale(std::locale::classic(),new boost::posix_time::time_input_facet("%H:%M"))
    };

    std::istringstream is(s);
    is.imbue(formats[mode]);
    is >> *pt;
}

return pt;
问题是,如果我传递一个字母
“a”
,它将被创建为一个带有特殊值“not-a-date-time”的
ptime

好的,我检查了文档,了解了如果我用默认构造函数创建一个
ptime
,我会得到一个
ptime
,类型相同。因此,在我的代码中,我用以下代码验证了输入:

boost::posix_time::ptime ptime;
if (*this->myDate != ptime)
{
    ...
} else 
{
    treat the problem;
}

我觉得这不是一个明确的解决方案,验证此日期的更好方法是什么?

ptime有一个is\u not\u date\u time()函数。 所以你可以

if(myDate.is_not_a_date_time())
   do_something();

从函数名判断,您正在从
.csv
文件中读取ISO8601日期。会有帮助吗?