std :: get_time-如何检查解析错误
std::get_time - How to check for parsing error
我正在使用以下代码将弦线解析为TM结构:
std::tm tm;
std::stringstream ss("Jan 9 2014 12:35:34");
ss >> std::get_time(&tm, "%b %d %Y %H:%M:%S");
我有兴趣检查是否发生解析错误(无效输入)。看来此功能不会引发异常。在文档中找不到有用的信息:http://en.cppreference.com/w/cpp/io/manip/get_time
听起来像检查" goodbit"可能是方向,但我不确定如何做。
(我正在使用VS2013编译器)
一如既往,std::istream
通过设置其iostate
之一来报告错误,可以使用成员函数fail()
,operator!
或将流对象转换为bool
进行测试。如果要配置流对象,以便在发生错误时会引发异常,则可以调用exceptions()
。
这是一个使用成员函数fail()
检查是否发生错误的小示例。
#include <iostream>
#include <sstream>
#include <iomanip>
int main()
{
std::tm t;
std::istringstream ss("2011-Februar-18 23:12:34");
ss >> std::get_time(&t, "%Y-%b-%d %H:%M:%S");
if (ss.fail()) {
std::cout << "Parse failedn";
} else {
std::cout << std::put_time(&t, "%c") << 'n';
}
}
使用 std::get_time()
使用std::istream
设置状态标志,以防std::time_get<...>::get_time()
失败。也就是说,您只会使用
ss >> std::get_time(&tm, "%b %d %Y %H:%M:%S");
if (!ss) {
// deal with an error
}
相关文章:
- error_code:如何设置和检查错误
- CocoaPod - 在头文件中使用 C++ 时出现 Podspec 检查错误
- 在编写包装现有函数并检查错误的模板函数时,如何使用完美转发?
- swscanf_s - 运行时检查错误
- 为什么C++字符串迭代器不检查错误?
- 如何使用运行时检查错误来修复我的C 格斗游戏
- XCode -Mac App -Bootstrap启动时检查错误
- 挂钩发送/WSASEND返回运行时检查错误#0
- 从整数到枚举值时,如何和何处检查错误
- C .如何检查错误的输入
- C++ 输入字符而不是 int 会导致无限循环.如何检查错误的输入
- 检查错误时重载>>运算符中的无限循环
- 开发基本的C++代码+检查错误/警告
- 在C++中,如何在使用gzstream编写压缩文件时检查错误
- 如何使 cuda-memcheck 在出现泄漏检查错误时返回非零
- 是否可以使用GetLastError检查错误代码是否已恢复
- 何时检查错误,使用 QIODevice 的阻塞接口(QTcpSocket 和 QFile)
- 在调用 recv() 之前检查错误
- C++类型检查错误
- 如何修复配置 PHP 7.0.1 时C++预处理器"/lib/cpp"健全性检查错误