gpt4 book ai didi

c++ - 环境 PATH 目录迭代

转载 作者:行者123 更新时间:2023-11-28 08:01:41 26 4
gpt4 key购买 nike

我找不到任何关于如何迭代(解析)PATH 中存在的目录的代码(C 和 C++ Boost.Filsystem) > 环境变量最好以独立于平台的方式。编写起来并不难,但我想重用可用的标准模块。任何人的链接或建议?

最佳答案

这是我之前用过的:

const vector<string>& get_environment_PATH()
{
static vector<string> result;
if( !result.empty() )
return result;

#if _WIN32
const std::string PATH = convert_to_utf8( _wgetenv(L"PATH") ); // Handle Unicode, just remove if you don't want/need this. convert_to_utf8 uses WideCharToMultiByte in the Win32 API
const char delimiter = ';';
#else
const std::string PATH = getenv( "PATH" );
const char delimiter = ':';
#endif
if( PATH.empty() )
throw runtime_error( "PATH should not be empty" );

size_t previous = 0;
size_t index = PATH.find( delimiter );
while( index != string::npos )
{
result.push_back( PATH.substr(previous, index-previous));
previous=index+1;
index = PATH.find( delimiter, previous );
}
result.push_back( PATH.substr(previous) );

return result;
}

这只会在每次程序运行时“计算”一次。它也不是真正的线程安全,但见鬼,与环境无关。

关于c++ - 环境 PATH 目录迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11295019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com