代码之家  ›  专栏  ›  技术社区  ›  Bas Smit

如何从输出流创建std::string?

  •  6
  • Bas Smit  · 技术社区  · 9 年前

    std::string make_date_string()
    

    我正在使用Howard Hinnant的日期库,它允许我做以下事情:

    cout << floor<days>(system_clock::now());
    

    打印如下内容:

    2017-07-09
    

    我试图找出如何将输出放入std::字符串中,以便从函数返回它,但我一无所获。

    2 回复  |  直到 9 年前
        1
  •  7
  •   user0042    9 年前

    我试图找出如何将输出放入std::字符串中,以便从函数返回它,但我一无所获。

    在这种情况下,您可以使用 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

        2
  •  3
  •   Howard Hinnant    9 年前

    被接受的答案是一个好答案(我投了更高的票)。

    这里有一个替代公式 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" .