[英]How to find an exe in $PATH using Boost
我正在使用Boost庫編寫C ++程序。 我需要能夠找到可執行文件的完整路徑,只給出名稱。 這相當於Unix shell的which
實用程序,Windows where
,或Python的shutil.which
。
有辦法做到這一點嗎? 我當然可以編寫自己的,通過遍歷PATH環境變量,但為了便於攜帶,我需要考慮拆分的事情:
或;
等,如果有一個預先編寫(和測試!)例程,我寧願使用它。
“寫我自己的”是通常如何做到的。 雖然這可能是C中的一個熊,但是使用C ++及其豐富的std::string
類,這變得毫無疑問。 甚至不需要Boost。 這將是介紹性C ++課程中典型的家庭作業:
std::string s=getenv("PATH");
const char sep=':'; // Or use ';', if you feel like it.
auto b=s.begin(), e=s.end();
while (b != e)
{
if (*b == sep)
{
++b;
continue;
}
auto p=b;
b=std::find(b, e, sep);
auto check=std::string(p, b) + "/" + filename;
if (access(filename.c_str(), X_OK) == 0)
{
// Found it. Insert code here.
}
}
這是一個非問題,它可能會更快,只是敲出來,然后嘗試找到一些庫函數,在某處,做同樣的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.