Qt究竟是如何处理字符串的,或者如何生成填充数字

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

本文关键字:或者 何生成 填充 字符串 数字 处理 究竟 何处理 Qt      更新时间:2023-10-16

我正在尝试使用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的帧中,如果不转换函数的结果,就不能产生用所请求的空格数填充的数字?

为什么'<lt;'没有为"setw()"重载?为什么在C++框架中一般不支持std::string这样的标准C++类型?(我确实需要转换为C字符*)

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

我不完全确定我是否理解您想要的内容,但如果您想打开QDebug流的自动引用,则可以使用noquote()

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