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

MAC - QString replace spaces with backslash spaces

首先,我看到了

我目前在 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"

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

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

Normally, QDebug prints the string inside quotes and transforms non-printable characters to their Unicode values (\u1234).

To print non-printable characters without transformation, enable the noquote() functionality.

如果您将代码更改为

qDebug().noquote() << test.replace(" ", "\ ");

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