我在Linux和一個完整的初學者中使用Qt框架。當我們使用QString打印時,爲什麼會出現雙引號?
當我打印一個簡單的信息,如:
qDebug() << "Hello World";
在控制檯輸出是Hello World
。
但如果我喜歡打印相同的消息:
QString str = "Hello World";
qDebug() << str;
在控制檯輸出爲"Hello World"
,(注意引號),如何獲得使用QString
相同的輸出?
我在Linux和一個完整的初學者中使用Qt框架。當我們使用QString打印時,爲什麼會出現雙引號?
當我打印一個簡單的信息,如:
qDebug() << "Hello World";
在控制檯輸出是Hello World
。
但如果我喜歡打印相同的消息:
QString str = "Hello World";
qDebug() << str;
在控制檯輸出爲"Hello World"
,(注意引號),如何獲得使用QString
相同的輸出?
禁用的周圍QChar則,QString的和的QByteArray內容引號字符自動插入並返回一個參考: 您可以通過使用得到相同的結果到溪流。
當引用被禁用時,這些類型打印時不帶引號字符,也不轉義不可打印的字符。
此功能是在Qt 5.4中引入的。
用法:
QString str = "Hello World";
qDebug().noquote() << str;
你可以找到的Qt源代碼的答案(在下面的鏈接實現的細節): https://code.woboq.org/qt5/qtbase/src/corelib/io/qdebug.h.html
你有< <操作
從Qt的源代碼的幾個定義:
/*! \ FN QDebug & QDebug ::運算< <(常量字符* S)
寫入 「\ 0'終止字符串s,到流和返回參考 到流中。該字符串從未被引用或轉換爲 輸出,但請注意,某些QDebug後端可能不是8位清理。
//! \ FN QDebug & QDebug ::運算< <(常量的QString & S)
寫入字符串,\ A S,到流和返回到所述流的引用。 通常,QDebug會在引號內打印字符串,並將 不可打印的字符轉換爲其Unicode值(\ u1234)。要在不進行轉換的情況下打印 不可打印字符,請啓用noquote() 功能。請注意,某些QDebug後端可能不是8位的 clean。輸出示例:\ code QString s; s =「a」; qDebug()。noquote() < < s; //打印:一個qDebug()< < s; //打印:「a」s =「\」a \ r \ n \「」; qDebug()< < s; //打印:「\」a \ r \ n \「」s =「\ 033」; //轉義字符 qDebug()< < s; //打印:「\ u001B」s =「\ u00AD」; // SOFT HYPHEN qDebug()< < s; //打印:「\ u00AD」s =「\ u00E1」; //拉丁小寫字母 A急性qDebug()< < s; //打印:「á」s =「a \ u0301」; //「a」 其次是組合急性ACCENT qDebug()< < s; //打印:「aÌ」; s = 「\ u0430 \ u0301」; // CYRILLIC小寫字母A後面加上組合急性 ACCENT qDebug()< < s; //輸出: 「d°√」 \ endcode */
qDebug()< <的 「Hello World」 使用QDebug & QDebug ::運算< <(爲const char * S),而不是QDebug & QDebug: :運營商< <(常量QString & s)這就是爲什麼你在一個版本而不是其他的報價。在QString
版本
qDebug().noquote() << s;
可能重複:http://stackoverflow.com/questions/27976581/why-is-qstring-printed-with-quotation-marks – Hayt
這是QString的實現方式。如果你想刪除「」,考慮使用std :: string,或者可能使用QByteArray。 –