原谅这个简单的问题,但我已经在这里待了好几个小时,没有成功。我试图实现一个功能:
std::string make_date_string()
我正在使用Howard Hinnant的日期库,这可以让我做这样的事情:
cout << floor<days>(system_clock::now());
打印类似的东西:
2017-07-09
我试图找出如何将输出转换为std :: string,这样我就能从函数中返回它,但我无处可去。
答案 0 :(得分:6)
我正在试图弄清楚如何将输出转换为std :: string,这样我就能从函数中返回它,但我无处可去。
在这种情况下,您可以使用std::ostringstream
:
std::ostringstream oss;
oss << floor<days>(system_clock::now());
std::string time = oss.str();
作为旁注:
因为它看起来像你的助手功能
template<typename Fmt>
floor(std::chrono::timepoint);
以iostream manipulator实施,可与任何std::ostream
实施一起使用。
答案 1 :(得分:3)
接受的答案是一个很好的答案(我已经投了赞成票)。
以下是替代配方using the same library:
#include "date.h"
#include <string>
std::string
make_date_string()
{
return date::format("%F", std::chrono::system_clock::now());
}
创建std::string
格式的"2017-07-09"
。这个特殊的表达方式非常好,因为您不必显式构造std::ostringstream
,并且您可以轻松地将格式更改为您喜欢的格式,例如:
return date::format("%m/%d/%Y", std::chrono::system_clock::now());
现在返回"07/09/2017"
。