我想在boost C ++中从std :: string日期时间只获得几小时和几分钟。 我有以下代码。
std::string d_time = std::string("2017-09-25 12:23:10");
我可以通过标记上面的字符串来获得它,但是有任何标准的boost函数只能提供来自" d_time" ?
先谢谢。
答案 0 :(得分:2)
函数std::get_time
和std::put_time
可以帮助您。
此类函数与stream
个对象一起使用,因此如果要处理字符串,可以使用stringstream
。
std::istringstream time_stream{d_time}; // Construct a stream from string
std::tm time; // Time structure
time_stream >> std::get_time(&time, "%Y-%m-%d %H:%M:%S"); // Fill time struct
一旦你有了正确的初始化std::tm
结构,你就可以提取所需的信息(小时和分钟)。
Here现场演示。
请注意,此类函数是标准 C ++ 11的一部分。
答案 1 :(得分:2)
如果你正在使用一个没有正确实现put_time / get_time操纵器的编译器/标准库版本,那么这里有一段使用Boost DateTime的代码
<强> Live On Wandbox 强>
#include <boost/date_time/posix_time/posix_time.hpp>
using boost::posix_time::time_from_string;
int main() {
auto time = time_from_string("2017-09-25 12:23:10").time_of_day();;
int hours = time.hours();
int minutes = time.minutes();
std::cout << "hours: " << hours << " minutes:" << minutes << "\n";
}