我想读的PATH
环境变量,去除存在于它使用任何重复的vector
功能,如- sort
,erase
和unique
。但是正如我所见,vector将通过换行符分隔每个默认元素。当我得到那条路时C:\Program Files(x86)\...
,它在处断裂C:/
Program
。到目前为止,这是我的代码:
char *path = getenv("PATH");
char str[10012] = "";
strcpy(str,path);
string strr(str);
vector<string> vec;
stringstream ss(strr);
string s;
while(ss >> s)
{
push_back(s);
}
sort(vec.begin(),vec.end());
vec.erase(unique(vec.begin(),vec.end()),vec.end());
for(unsigned i=0;i<vec.size();i++)
{
cout<<vec[i]<<endl;
}
是定界符问题吗?我需要每个都pus_back;
并搜索重复项。谁能在这方面帮助我。
我将使用字符串流将其切碎,并使用一个集合来确保没有重复。
std::string p { std::getenv("PATH") }
std::set<string> set;
std::stringstream ss { p };
std::string s;
while(std::getline(ss, s, ':')) //this might need to be ';' for windows
{
set.insert(s);
}
for(const auto& elem : set)
std::cout << elem << std::endl;
如果出于某种原因需要使用向量,则需要对其进行排序,std::sort
然后使用删除重复项,std::unique
然后使用擦除来擦除松弛。
std::sort(begin(vec), end(vec));
auto it=std::unique(begin(vec), end(vec));
vec.erase(it, end(vec));
编辑:链接到文档
http://en.cppreference.com/w/cpp/container/set
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句