今天我需要在我的C ++程序中实现一个易于从shell到whit的任务:
% which foo
/usr/local/bin/foo
以下是我的解决方案草图:
QString leafName("foo");
QString resolvedPath;
QString paths(qgetenv("PATH"));
QStringList components = paths.split(':');
QStringList::iterator iter, e_iter = components.end();
for (iter = components.begin(); iter != e_iter; ++iter)
{
QString aPath(*iter);
aPath += "/";
aPath += leafName;
QFileInfo fInfo(aPath);
if (fInfo.exists())
{
resolvedPath = fInfo.canonicalFilePath();
break;
}
}
if (resolvedPath.isEmpty()) {
resolvedPath = leafName;
}
// inform user of path we intend to execute from
我在Boost文件系统和Qt以及谷歌搜索中搜索了一个罐装版本之后才编写了这段代码。谷歌匹配我想要的所有想法我自己的运行程序的完整路径。
这似乎是一个合理的功能原子,因此自己编写它是愚蠢的。它存在吗?