得到2qdir的共同父母
Get common parent of 2 QDir
是否有办法获得最接近的共同父2 QDir对象?例如:
QDir d1("/someroot/parent/test/folder");
QDir d2("/someroot/parent/another/folder");
QDir d3 = commonParent(d1, d2);
// d3 == "/comeroot/parent/"
提振。不幸的是,文件系统不是一个选项。
const QString commonParent(const QString &path1, const QString &path2)
{
QString ret = path2;
while (!path1.startsWith(ret))
ret.chop(1);
if (ret.isEmpty())
return ret;
while (!ret.endsWith('/'))
ret.chop(1);
return ret;
}
您可以使用QDir::cdUp()。
工作的例子:
QString commonParent(const QDir& inputDirOne, const QDir& inputDirTwo) {
QDir dirOne(inputDirOne);
QString dirTwoAbsolutePath = inputDirTwo.absolutePath();
do {
if (dirTwoAbsolutePath.startsWith(dirOne.absolutePath()))
return dirOne.absolutePath();
} while(dirOne.cdUp());
return QString();
}
和用法:
//QDir dir1("C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Addins\somefile.txt");
QDir dir1("..");
//QDir dir2("C:\Program Files (x86)\Microsoft Visual Studio 11.0\Licenses\Update\1033\License.htm");
QDir dir2("../../..");
QString result = commonParent(dir1, dir2);
qDebug() << "Common Dir : " << (result.isEmpty() ? "Does not exist" : result);
我用一些奇怪的路径测试了一下,效果很好
相关文章:
- 在C++中,我如何接受不同于同一行的用户输入
- 如何创建从同一类继承的不同对象的向量
- 我收到同义重复编译器错误。我应该如何修复"类型"X"的参数与类型"X"的参数不兼容?
- 获取从C++中同一类中的构造函数调用的方法返回的值
- C++如何将同一类的实例作为属性
- 在TFHE(完全快速同态加密)上执行除法
- 如何封装一个函数,以便它只能由同一类中的一个其他函数调用?
- 如何使用运算符在同一行中多次调用函数
- 如何使用connect将qml按钮与同一类的cpp函数连接起来
- 如何格式化我的文本文件以使其不会一遍又一遍地重复同一行?
- C++交换来自同一类成员的参数值,处理多个类
- C++找出覆盖同一行的数组
- 使用同一类中的方法重新分配字段时出现问题
- 如何在同一行内打印和返回?
- 类成员函数无法访问同一类的私有结构节点?
- MOVNTI 存储是否相对于由同一线程创建的其他 MOVNTI 存储重新排序?
- 同一线程 ID 是否可以在同一进程中重复使用?
- 无法将指向类的成员函数的函数指针作为参数传递给同一类的另一个成员函数
- C++ 如何在同一行中和在一条线上?
- 得到2qdir的共同父母