MAC - QString用反斜杠空格替换空格

时间:2017-04-15 21:46:50

标签: macos qt replace qstring

首先,我见过this answer

我目前在Mac上使用Qt 5.8,并尝试使用以下代码:

QString test("/Users/test/Documents/ASCII Tables.pdf");
qDebug() << test.replace(" ", "\\ ");

预期结果应该像:

"/Users/test/Documents/ASCII\ Tables.pdf"

我得到的是两个黑色墨水:

"/Users/test/Documents/ASCII\\ Tables.pdf"

有人有建议吗?

更新:(关于@ docsteer的回答)我打算将QString test用作QProcess:start()的一部分,例如:

QProcess process;
process.start("ls " + test);
process.waitForFinished(-1);
qDebug() << process.readAllStandardOutput();
qDebug() << process.readAllStandardError();

并且结果不符合预期,因为两个反斜杠都插入到命令中:

""
"ls: /Users/test/Documents/ASCII\\: No such file or directory\nls: Tables.pdf: No such file or directory\n"

1 个答案:

答案 0 :(得分:3)

您看到的不是字符串的实际内容。 QDebug在打印字符时转义字符:

http://doc.qt.io/qt-5/qdebug.html#operator-lt-lt-16

  

通常,QDebug会在引号和变换中打印字符串   不可打印的字符到其Unicode值(\ u1234)。

     

要在不进行转换的情况下打印不可打印的字符,请启用   noquote()功能。

如果您将代码更改为

0

您将看到您所期望的 - 字符串的原始内容