我有一个程序提供了一个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