【问题标题】:Why are there double quotes when we print using QString?为什么我们使用 QString 打印时会有双引号?
【发布时间】:2016-09-16 09:00:58
【问题描述】:

我在 Linux 中使用 Qt 框架并且是一个完整的初学者。

当我打印一条简单的消息时:

qDebug() << "Hello World";

在控制台中,输出为Hello World

但如果我打印相同的消息,例如:

QString str = "Hello World";
qDebug() << str;

在控制台中输出为"Hello World"(注意引号),如何使用QString获得相同的输出?

【问题讨论】:

标签: qt


【解决方案1】:

QDebug::noquote

禁止在 QChar、QString 和 QByteArray 内容周围自动插入引号字符并返回对流的引用。

禁用引用时,打印这些类型时不带引号字符,也不转义不可打印的字符。

此功能是在 Qt 5.4 中引入的。

用法:

QString str = "Hello World";
qDebug().noquote() << str;

http://doc.qt.io/qt-5/qdebug.html#noquote

【讨论】:

    【解决方案2】:

    您可以在 Qt 源代码中找到答案(实现细节在下面的链接中): https://code.woboq.org/qt5/qtbase/src/corelib/io/qdebug.h.html

    你有几个的定义

    来自 Qt 源代码:

    /*! \fn QDebug &QDebug::operator

    写入 '\0' 终止的字符串 s,到流并返回一个引用 到溪流。该字符串从未被引用或转换为 输出,但请注意,某些 QDebug 后端可能不是 8 位干净的。

    //! \fn QDebug &QDebug::operator

    将字符串 \a s 写入流并返回对流的引用。 通常,QDebug 在引号内打印字符串并转换 不可打印的字符到它们的 Unicode 值 (\u1234)。打印 没有转换的不可打印字符,启用 noquote() 功能。请注意,某些 QDebug 后端可能不是 8 位的 干净的。输出示例:\code QString s; s = "一个"; qDebug().noquote()

    qDebug()

     qDebug().noquote() << s;
    

    QString 版本上

    【讨论】:

    • 你发的代码不是Qt的源代码,它来自docs。答案应该包含一个链接(和选项的解释),而不是 Qt 源代码中的 cmets。
    • 您忘记添加解决方案,您只显示了解释。
    • 解决方案在最后! qDebug().noquote()
    猜你喜欢
    • 2015-03-14
    • 2017-05-08
    • 2020-02-13
    • 2015-11-28
    • 1970-01-01
    • 2015-05-09
    • 2015-11-17
    • 1970-01-01
    • 2020-03-01
    相关资源
    最近更新 更多