gpt4 book ai didi

c++ - 使用 stringstream 格式化日期

转载 作者:行者123 更新时间:2023-11-30 01:54:22 24 4
gpt4 key购买 nike

我想避免在我的 C++ 代码中使用 sprintf,这样我只能使用 C++ 中的标准字符串,但我还没有找到替换它的方法。我目前使用 sprintf 来格式化日期和时间,如下所示:

char myDate[DATE_LENGTH]{};
sprintf(myDate, "%4d-%02d-%02d %02d:%02d:%02d", year, month, day,
hour, minute, second);

通过这种方式,我将为每个整数获得固定长度,如果需要,可以使用前导零。

我搜索了如何用 stringstream 替换它,并找到了这个:

std::ostringstream ss;
ss << std::setw(5) << std::setfill('0') << 12 << "\n";

但这只会格式化其中一个整数。我需要为每个日期和时间组件执行此操作,然后将它们全部附加在一起。因此,要替换一行 C 风格的代码,我需要更多的新代码。

没有比这更好的办法了吗?

最佳答案

(1)定义自己的datatime类。

(2) 定义operator <<()operator >>()为了它。在这些功能中,使用 std::time_putstd::time_get要实现的方面。

(3) 如果std::time_putstd::time_get不能满足你的需求,你可以通过继承定义你自己的time_put/get facet,如果需要的话还可以定义其他的辅助facet,比如date_time format manager。

PS:如果您使用的是 c++11,std::time_put::put()std::time_get::get()可能会满意。

祝你好运!

关于c++ - 使用 stringstream 格式化日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22142372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com