Qt 究竟如何处理字符串或如何生成填充数字?

How exactly Qt handles strings or how to generate padded numbers?

我正在尝试使用 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的框架中,如果不转换函数的结果,生成的数字填充了请求的空格数,是不能生成的吗?

为什么“<<”没有为 'setw()' 超载? 为什么通常 C++ 框架不支持 std::string 等标准 C++ 类型? (我确实需要转换成 C-s char*)

为了与 C++ 兼容(比如可以在有和没有 Qt 的情况下使用的函数),ostringstream 方法似乎产生较少的项目。有更好的主意吗?

我不完全确定我明白你在找什么,但如果你想关闭 QDebug 流的自动引用,那么你可以使用 noquote()

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