QString :: endsWith()不起作用?

ula*_*ade 1 c++ qstring qt

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

我使用endsWith第二个参数的方法:Qt::CaseInsensitive.

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

在调试器中,字符串看起来没问题,在最终字符之后没有尾随空格或任何内容.

它应该工作,但它只适用于某些文件扩展名.这是我的支票样本:

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

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();
}
Run Code Online (Sandbox Code Playgroud)

myString是 "magnets.zip"

Ben*_*ela 6

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))
{
Run Code Online (Sandbox Code Playgroud)

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

, 是一个运算符,它评估双方,但只返回其表达式的右侧