【问题标题】:C++: Using %n with strftimeC++:将 %n 与 strftime 一起使用
【发布时间】:2016-11-18 06:13:49
【问题描述】:

我正在使用VS2010C++ 中开发应用程序。我尝试将"%d-%m-%y %n %H:%M:%S" 格式与strfime 一起使用,但运行时错误告诉Debug assert Failed: “Invalid format directive”。在尝试解决问题时,我发现%nC++11 的一部分,并且不受VS2010 的支持。所以我的问题是:有没有其他方法可以让日期和时间出现在两条不同的行中?我没有选择使用其他版本的 VS。

编辑:

其实我正在使用库wxfreechart 来创建图表。日期和时间出现在 X 轴上。在wxfreechart 我有函数SetDateFormat() 接受date format in strftime style (http://wxcode.sourceforge.net/docs/freechart/classDateAxis.html)。我的代码实际上如下:

bottomAxis->SetDateFormat(wxT("%d-%m-%y %n %H:%M:%S"));

\n 而不是 %n 在这里什么都不提供。

对于我关于strftime 的错误,我深表歉意。

【问题讨论】:

  • 你确定wxfreechart支持新行吗?也许,任何空格(包括\n\t 都替换为` `(单个空格)。我的​​意思是,strftime 样式的使用不一定是调用strftime,甚至不一定支持C++ 标准
  • @VolAnd:我在 wxfreechart 中使用 \t 和 \n 时没有遇到任何错误。但它也不提供换行符或制表符空间。
  • 所以,问题不在于strftime,这是DateAxisSetDateFormat 的特性
  • @VolAnd:所以我没有选择?

标签: c++ visual-studio-2010 c++11 wxwidgets strftime


【解决方案1】:

当然,尝试打印格式化字符串"%d-%m-%y \n %H:%M:%S",从而将"%n" 替换为"\n"。这样,它应该可以在较旧的 C++ 标准中工作,因此在 VS2010 中。

否则您可以考虑升级到新版本的 Visual Studio。

这是一个很好的参考:http://www.cplusplus.com/reference/ctime/strftime/

【讨论】:

  • 我试过了..但不起作用..而且我不应该使用其他版本
  • 升级 VS 版本,任何编译器版本,在专业编程领域都可能充满政治噩梦。多年来我一直试图放弃 GCC 3.3,但我们有这个旧项目,它形成了用于后续构建系统的模型,并且仍在积极开发和支持,你不会随意更改没有广泛的路线图。
  • @Jackzz "我试过了..但是没用" - 你试过什么?
  • @VolAnd:我试过"%d-%m-%y \n %H:%M:%S",我只是在日期和时间之间留了一个空格
  • @Jackzz 所以,我理解正确,并检查了......它可以在我的 VS2010 电脑上运行(请参阅下面的答案示例,直到我删除它)。也许,你应该重建项目并再次检查\n
【解决方案2】:

问题不在于strftime,而在于我对wxfreechart 的使用。我必须将verticallabeltext 设置为false,然后我可以像strftime 一样使用\n

bottomAxis->SetVerticalLabelText(false);
bottomAxis->SetDateFormat(wxT("%d-%m-%y\n%H:%M:%S"));

【讨论】:

    猜你喜欢
    • 2019-09-14
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    相关资源
    最近更新 更多