2011-03-26 142 views
4

我有一个程序提供了一个QString并将每个“\”更改为“/”。这看起来很简单,但是当我用下面的代码,5个错误发生:将反斜杠更改为在QString中正斜杠

QString path ; 
path = "C:\MyLife\Image Collection" ; 
for(int i=0 ; i < path.size() ; i++) 
{ 
    if(path[i] == "\") 
     path[i] = "/" ; 
} 
qDebug() << path ; 
+6

“5个错误发生......”请提供有关这些错误的详细信息。 – JYelton 2011-03-26 09:40:43

+0

请不要不必要地包含C标签。 – 2011-03-26 09:54:38

+1

首先“表示C/C++中的字符串 - 用于字符” – 2011-03-26 09:56:08

回答

3

因为反斜杠\被用作转义字符(用于事物如\n换行符,\r回车符,以及\b退格符),则需要用另一个反斜杠转义反斜杠,为您提供文字反斜杠。也就是说,无论你在哪里想要一个\,你都会把\\

2
  • 字符串不能在C/C++中直接比较。
  • 字符可以比较。
  • “\”是字符串,而“\”是一个字符。
+0

您的意思是:“\\”是一个字符串,而“\\”是一个字符。 – TonyK 2011-03-26 10:14:19

+0

@tonyk是的谢谢。 – 2011-03-26 10:21:35

13

请停止流血吧!并使用跨平台目录/路径包装类。 Qt有一些:QDir,QFileInfo,QFile。只要使用它们。

哦,和一个QDir有一个不错的静态方法适合你,这不正是你想要什么:

path = QDir::fromNativeSeparators(path); 

没有理由这样做手工(与错误)

+0

在Linux上不起作用! – abergmeier 2013-07-05 13:19:33

+0

同样在这里,是不正确的? http://qt-project.org/doc/qt-4.8/qdir.html#fromNativeSeparators – 2014-04-09 14:26:17

1

没有人有固定的两个你的错误在同一职位,所以这里有云:

if(path[i] == '\\') // Double backslash required, and 
     path[i] = '/' ; // single quote (both times!) 
0

什么工作对我来说的Qt4的Linux使用:Qt的职能的工作

std::replace(path.begin(), path.end(), QChar('\\'), QChar('/')); 

无明显。