QString::endsWith() 不起作用?

QString::endsWith() doesn't work?

我有一个函数,可以检查字符串的结尾以确定扩展名。

我使用带有第二个参数的方法 endsWithQt::CaseInsensitive

现在的问题是,对于某些扩展,它可以工作,而对于其他扩展,则不能。字符串只用普通的拉丁字符书写,没什么特别的。

在调试器中,字符串看起来没问题,没有尾随空格或最后一个字符后的任何内容。

它应该可以工作,但它只对某些文件扩展名有效。这是我的支票样本:

if(myString.endsWith(".mp3", Qt::CaseInsensitive) || myString.endsWith(".wav", Qt::CaseInsensitive) || myString.endsWith(".flac", Qt::CaseInsensitive) ||
   myString.endsWith(".ape", Qt::CaseInsensitive))
{
    DoSomething();
}

myString 是 "Glory.mp3"

它仅适用于某些文件扩展名。

这是一个无法正常工作的案例:

else if(myString.endsWith(".zip", Qt::CaseInsensitive) || myString.endsWith(".rar", Qt::CaseInsensitive) || myString.endsWith(".tar", Qt::CaseInsensitive) ||
            myString.endsWith(".tar.gz", Qt::CaseInsensitive), myString.endsWith(".7z", Qt::CaseInsensitive))
{
    DoSomethingElse();
}

myString 是 "magnets.zip"

else if(myString.endsWith(".zip", Qt::CaseInsensitive) ||  myString.endsWith(".rar", Qt::CaseInsensitive) || myString.endsWith(".tar", Qt::CaseInsensitive) ||
        myString.endsWith(".tar.gz", Qt::CaseInsensitive), myString.endsWith(".7z", Qt::CaseInsensitive))
{

在最后两次 endsWith 调用之间使用 || 而不是 ,

, 是一个计算两边的运算符,但仅 returns 其表达式的右侧