代表日期的字符串并将其转换

flu*_*ter 5 c++ string stdstring c++11

要格式化表示从其他部分收到的日期的字符串,需要进行一些转换:

source:
    std::string s = "20190510";
target:
    std::string t = "05/10/2019";
Run Code Online (Sandbox Code Playgroud)

一种方法是逐个字符地复制char,是否有一种优雅的方法可以使其美观又快速?

更新:对不起,转换应该是从“ yyyymmdd”到“ mm / dd / yyyy”。

Sto*_*ica 2

如果您不想修改字符串或复制它,那么您可以选择仅在需要时对其进行格式化。这可以通过一个小实用程序来完成:

struct date_format {
    std::string const& str;
    date_format(std::string const& str) : str(str) {}
    friend std::ostream& operator<< (std::ostream& os, date_format const& df) {
        return os.write(&df.str[4], 2)
                 .put('/')
                 .write(&df.str[6], 2)
                 .put('/')
                 .write(&df.str[0], 4);
    }
};
Run Code Online (Sandbox Code Playgroud)

例如,要像这样使用std::cout << date_format(source);请现场查看

否则肯定需要复制或移动角色。