我想避免在我的C++代码中使用sprintf,因此我只能使用C++中的std字符串,但是我还没有找到替换它的方式。我现在用sprintf格式化日期和时间是这样的:使用stringstream格式化日期
char myDate[DATE_LENGTH]{};
sprintf(myDate, "%4d-%02d-%02d %02d:%02d:%02d", year, month, day,
hour, minute, second);
通过这种方式,如果需要的话,我会得到每个整数一个固定长度,带前导零。
我已搜查了如何使用字符串流代替这一点,并发现这一点:
std::ostringstream ss;
ss << std::setw(5) << std::setfill('0') << 12 << "\n";
但这只会格式化整数之一。我需要为每个日期和时间组件执行此操作,然后将它们全部附加在一起。所以要替换一行C风格的代码,我需要更多的新代码。
难道没有办法做得比这更好吗?