我有一個程序提供了一個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 ;
我有一個程序提供了一個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 ;
你需要逃避\
if(path[i] == '\\')
同樣的,
path = "C:\\MyLife\\Image Collection" ;
或者使用C++ 0x原始字符串! (不需要轉義) – David 2011-03-26 10:32:13
因爲反斜槓\
被用作轉義字符(用於事物如\n
換行符,\r
回車符,以及\b
退格符),則需要用另一個反斜槓轉義反斜槓,爲您提供文字反斜槓。也就是說,無論你在哪裏想要一個\
,你都會把\\
。
- 字符串不能在C/C++中直接比較。
- 字符可以比較。
- 「\」是字符串,而「\」是一個字符。
您的意思是:「\\」是一個字符串,而「\\」是一個字符。 – TonyK 2011-03-26 10:14:19
@tonyk是的謝謝。 – 2011-03-26 10:21:35
請停止流血吧!並使用跨平臺目錄/路徑包裝類。 Qt有一些:QDir,QFileInfo,QFile。只要使用它們。
哦,和一個QDir有一個不錯的靜態方法適合你,這不正是你想要什麼:
path = QDir::fromNativeSeparators(path);
沒有理由這樣做手工(與錯誤)
在Linux上不起作用! – abergmeier 2013-07-05 13:19:33
同樣在這裏,是不正確的? http://qt-project.org/doc/qt-4.8/qdir.html#fromNativeSeparators – 2014-04-09 14:26:17
沒有人有固定的兩個你的錯誤在同一職位,所以這裏有雲:
if(path[i] == '\\') // Double backslash required, and
path[i] = '/' ; // single quote (both times!)
什麼工作對我來說的Qt4上的Linux使用:Qt的職能的工作
std::replace(path.begin(), path.end(), QChar('\\'), QChar('/'));
無明顯。
「5個錯誤發生......」請提供有關這些錯誤的詳細信息。 – JYelton 2011-03-26 09:40:43
請不要不必要地包含C標籤。 – 2011-03-26 09:54:38
首先「表示C/C++中的字符串 - 用於字符」 – 2011-03-26 09:56:08