I have two lists. Both containing the same values:
QStringList filePaths;
filePaths.append("C:/backup");
filePaths.append("C:/download/file1");
filePaths.append("D:");
filePaths.append("C:/program");
filePaths.append("C:/download");
QStringList refinedPaths;
int size = filePaths.size();
for(int i = 0; i < size; i++)
{
refinedPaths.append(filePaths.at(i));
}
for(int i = 0; i < size; i++)
{
QString str1 = filePaths.at(i);
for(int j = 0; j < size; j++)
{
QString str2 = filePaths.at(j);
if(str2 == str1)
{
continue;
}
if(str2.startsWith(str1))
{
refinedPaths.removeAll(str2);
}
}
}
What I'm expecting to happen is: * Iterate through the strings in list, comparing every item in the list with each other. * If string1 starts with string2 (string2 is therefore the parent directory of string1) * remove that string from the 'refined' stringlist.
Howver, what is happening is that if(str2.startsWith(str1))
is returning true every time, and refinedPaths.removeAll(str2);
doesn't remove any of the strings in the list.
Any ideas?