首先,我见过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"
答案 0 :(得分:3)
您看到的不是字符串的实际内容。 QDebug在打印字符时转义字符:
http://doc.qt.io/qt-5/qdebug.html#operator-lt-lt-16
通常,QDebug会在引号和变换中打印字符串 不可打印的字符到其Unicode值(\ u1234)。
要在不进行转换的情况下打印不可打印的字符,请启用 noquote()功能。
如果您将代码更改为
0
您将看到您所期望的 - 字符串的原始内容