【问题标题】:How exactly Qt handles strings or how to generate padded numbers?Qt 究竟如何处理字符串或如何生成填充数字?
【发布时间】:2017-01-07 10:42:19
【问题描述】:

我正在尝试使用 Qt 日志记录,在该框架中我正在寻找 setw() 和 setfill() 的等效项。我有代码

  int TestNum = 12;
  ostringstream oss;
  oss << setw(5) << setfill(' ') << TestNum;
  qInfo() << "Simple  ='" << TestNum << "'";
  qInfo() << "Stream  ='" << oss.str().c_str() << "'";
  qInfo() << "QString ='" << QString("%1").arg(TestNum,5) << "'";
  qInfo() << "char*   ='" << QString("%1").arg(TestNum,5).toStdString().c_str() << "'";

输出是

Simple  =' 12 '
Stream  ='    12 '
QString =' "   12" '
char*   ='    12 '

我的问题:

对于所有示例:如何摆脱有效载荷部分周围过时的 ' '? (如果我想用十六进制写 12,我会收到'x C')

引号是字符串的一部分吗? (根据转换,不是。在QT的框架内,是的。)转换多少才有效,如果打印的图像,长度等不同?

我对在Qt的框架中,不转换函数的结果,产生用请求的空格数填充的数字,不能产生吗?

为什么 '

为了与 C++ 兼容(例如可以与 Qt 一起使用或不与 Qt 一起使用的函数),ostringstream 方法似乎生成的项目较少。有更好的主意吗?

【问题讨论】:

    标签: c++ qt qstring


    【解决方案1】:

    我不完全确定我理解您在寻找什么,但是如果您想关闭 QDebug 流的自动引用,那么您可以使用 noquote() 来实现

    qDebug().noquote() << QString("some string");
    

    【讨论】:

    • 对不起,我不习惯这么活跃的输出对象
    猜你喜欢
    • 2011-12-31
    • 2019-08-12
    • 1970-01-01
    • 2020-02-14
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多