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");
我正在尝试使用 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");