2012-08-07 463 views
10

任何人都可以帮忙跟随?假设我有预存一定文件的文件路径为QString,我想从它与\\(双反斜线)更换/(斜杠)我想:如何用''替换'/'使用QString替换()?

mystring.replace("/","\\"); 

但它只是提出一个\代替更换前\\

字符串:D:\myfiles\abc.zip

EXPEC:更换后D:/myfiles/abc.zip

字符串泰德字符串:D:\\myfiles\\abc.zip

+0

不能确定,但​​据我记得一个QFile/QFileInfo愉快地与任何目录分隔 – friendzis 2012-08-07 08:33:18

+0

我很惊讶工作这实际上编译。是不是你用第三个'\\'转义关闭'''?你用什么语言?C++? – CodesInChaos 2012-08-07 08:34:45

+0

但是adb需要'\\':p 我正在制作一个自动adb工具:) – 2012-08-07 08:35:02

回答

23

您需要使用:

mystring.replace("/","\\\\"); 

编译器使用\作为字符串转义字符(对于像\t\n\r),以便\\实际上变成\。如果你需要两个反斜杠,你需要从四个开始。

0

1)为什么要替换它们,AFAIR正斜杠也可以在文件操作中工作(不管OS如何)。
2)您是否尝试阅读文档 - 例如为什么\\会导致单个反斜杠?

+0

因为在Android手机中执行adb操作时正斜杠不起作用他们需要用双反斜线代替(即使单反斜杠也不起作用):p – 2012-08-07 08:40:07

+0

您可以阅读paxdiablo在文档中发布的解释,它清楚地描述了使用单个'\\'作为转义字符。每个转义字符都会转义一个字符。 – 2012-08-07 08:45:11

18

如果你想路径转换为Windows格式,你可以简单地使用QDir::toNativeSeparators()

qDebug() << QDir::toNativeSeparators("c:/windows/path"); // Prints "c:\windows\path"