更改反斜杠以在QString中转发斜杠

时间:2011-03-26 09:37:05

标签: c++

我有一个提供QString的程序,并将每个“\”更改为“/”。看起来很简单但是当我使用下面的代码时,会发生5个错误:

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

6 个答案:

答案 0 :(得分:14)

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

哦,QDir有一个很好的静态方法,它可以完全满足您的需求:

 path = QDir::fromNativeSeparators(path);

没有理由手动(带有错误)

答案 1 :(得分:5)

你需要逃避\

if( path[i] == '\\' )

相同
path = "C:\\MyLife\\Image Collection" ;

http://en.wikipedia.org/wiki/C_syntax#Backslash_escapes

答案 2 :(得分:3)

因为反斜杠\用作转义字符(对于\n换行符,\r回车符和\b退格键),您需要转义用另一个反斜杠反斜杠给你一个字面反斜杠。也就是说,只要您想要\,就可以放置\\

答案 3 :(得分:2)

  
      
  • 无法在C / C ++中直接比较字符串。
  •   
  • 可以比较角色。
  •   
  • “\”是字符串,而'\'是字符。
  •   

答案 4 :(得分:1)

没有人在同一篇文章中修正了你的错误,所以这里有:

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

答案 5 :(得分:0)

Linux 上的 Qt4 对我有用的是:

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

显然,没有任何Qt功能正常工作。