2011-03-26 145 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('/')); 

無明顯。