我有一个提供QString的程序,并将每个“\”更改为“/”。看起来很简单但是当我使用下面的代码时,会发生5个错误:
QString path ;
path = "C:\MyLife\Image Collection" ;
for( int i=0 ; i < path.size() ; i++ )
{
if( path[i] == "\" )
path[i] = "/" ;
}
qDebug() << path ;
答案 0 :(得分:14)
拜托,现在停止流血!并使用跨平台目录/路径包装类。 Qt有一些:QDir,QFileInfo,QFile。只需使用它们。
哦,QDir有一个很好的静态方法,它可以完全满足您的需求:
path = QDir::fromNativeSeparators(path);
没有理由手动(带有错误)
答案 1 :(得分:5)
你需要逃避\
if( path[i] == '\\' )
与
相同path = "C:\\MyLife\\Image Collection" ;
答案 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功能正常工作。