【问题标题】:%F returns no output%F 不返回任何输出
【发布时间】:2014-09-09 18:05:12
【问题描述】:

我正在编写代码以在工作中为我们的 Web 服务器自动编写标记,但我在尝试使用 <ctime> 标头中的 strftime() 在文本文件中实现自动日期插入时遇到了麻烦。以下是相关代码:

if (yen(raw_input))
    {
        time_t rawtime;
        struct tm * timeinfo;
        time (&rawtime);
        timeinfo = localtime (&rawtime);
        strftime(buf, 10, "%F", timeinfo);
        strftime(cuf, 60, "%B %d, %Y", timeinfo);
        date = buf;
        longdate = cuf;
    }
...
ofstream mark;
const string filename = name + date + ".txt";
mark.open(filename);
mark << "{s5_mp3}http://www.####DELETED####.org/media/s5_mp3/" << date << "_" << name_cf << "_Sermon.mp3" << "{\s5_mp3}\n";
mark << hon << " " << name << ": ";
if (is_series) {mark << series << ": ";}
mark << title << "\n";
mark << verse << "\n" << longdate << "\n\0";
mark.close();

第一个引用块将今天的日期以两种不同的格式插入到两个已经初始化的字符缓冲区中,然后将它们存储到字符串中,第二个部分将所有内容写入文件。 date 的格式为 YYYY-MM-DD(%F),longdate 的格式为 Month DD, YYYY(%B %d, %Y)。问题是 strftime 在使用 %F 时无法将任何内容写入 char 缓冲区(使用调试确定)。如果我将 %F 更改为同义语法“%Y-%m-%d”,它会很好地返回年份和月份,但日期是两个被 g++ 框出的符号。令人困惑的部分是longdate 完美运行,所以timeinfo 不是问题。有什么想法吗?

【问题讨论】:

    标签: c++ strftime ctime


    【解决方案1】:

    您应该阅读standard definition for strftime。特别是 %F 的兼容性部分是:

    在 C99 中引入(仅在 C++11 之后的 C++ 实现中才需要),符合旧标准的库可能不支持。

    【讨论】:

    • 我正在使用-std=c++0x进行编译,我也使用相同的选项自行测试了代码,它完美地输出了信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 2015-07-27
    • 2017-08-09
    相关资源
    最近更新 更多