假设我有time_t和tm结构.我不能使用Boost而是MFC.如何使其成为如下所示的字符串?
Mon Apr 23 17:48:14 2012
使用sprintf的唯一方法?
解决方法
C库包括
strftime
专门用于格式化日期/时间.你要求的格式似乎符合这样:
char buffer[256]; strftime(buffer,sizeof(buffer),"%a %b %d %H:%M:%S %Y",&your_tm);
我相信std::put_time
使用类似的格式字符串,尽管它可以缓解您必须明确处理缓冲区.如果要将输出写入一个流,这是非常方便的,但是要将其输入到字符串中,这不是很有帮助 – 您必须执行以下操作:
std::stringstream buffer; buffer << std::put_time(&your_tm,"%a %b %d %H:%M:%S %Y"); // now the result is in `buffer.str()`.
std :: put_time是C 11的新增功能,但是C 03在一个可以做同样事情的区域中有一个time_put方面.如果记忆服务,我确实设法让它工作一次,但之后决定这是不值得的麻烦,我没有这样做.