У меня есть два списка.Оба содержат одинаковые значения:
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);
}
}
}
Я ожидаю, что произойдет следующее: * Перебирать строки в списке, сравнивая каждый элемент в списке друг с другом.* Если строка1 начинается со строки2 (следовательно, строка2 является родительским каталогом строки1) * удалить эту строку из «уточненного» списка строк.
Однако, происходит то, что if(str2.startsWith(str1))
каждый раз возвращает true, иrefinedPaths.removeAll(str2);
не удаляет строки в списке.
Есть идеи?