#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
#include <string>
#include <iostream>
using namespace std;
class Op_directory
{
public:
Op_directory();
~Op_directory();
void initIllegalPath();
void findspecialPath();
};
Op_directory::Op_directory()
{
}
Op_directory::~Op_directory()
{
}
vector<string> forbiddenDirList;
vector<string> limiteDirList;
vector<string> publicList;
void Op_directory::initIllegalPath()
{
char *home = getenv("HOME");
string home_path = home;
forbiddenDirList.push_back("/etc");
forbiddenDirList.push_back("/lib");
forbiddenDirList.push_back("/var");
forbiddenDirList.push_back("/boot");
forbiddenDirList.push_back("/dev");
forbiddenDirList.push_back("/proc");
forbiddenDirList.push_back("/sys");
forbiddenDirList.push_back("/run");
forbiddenDirList.push_back("/usr/local/cssis");
limiteDirList.push_back("/");
limiteDirList.push_back("/bin");
limiteDirList.push_back("/bin/");
limiteDirList.push_back("/sbin");
limiteDirList.push_back("/sbin/");
limiteDirList.push_back("/usr");
limiteDirList.push_back("/usr/");
limiteDirList.push_back("/usr/bin");
limiteDirList.push_back("/usr/bin/");
limiteDirList.push_back("/usr/lib");
limiteDirList.push_back("/usr/lib/");
limiteDirList.push_back("/usr/sbin");
limiteDirList.push_back("/usr/sbin/");
limiteDirList.push_back("/home/");
limiteDirList.push_back("/home");
limiteDirList.push_back("/root");
limiteDirList.push_back("/root/");
limiteDirList.push_back(home_path);
if(home_path[home_path.size() - 1] != '/')
limiteDirList.push_back(home_path + "/");
else
{
home_path[home_path.size() - 1] = '\0';
limiteDirList.push_back(home_path);
}
}
void Op_directory::findspecialPath()
{
vector<string>::iterator it;
int j = 0, i = 0;
for(it = limiteDirList.begin(); it != limiteDirList.end(); it++)
{
for(j=0; j<forbiddenDirList.size(); j++)
{
if(strlen((char *)limiteDirList[i].c_str()) < strlen((char *)forbiddenDirList[j].c_str()))
{
if(NULL != strstr((char *)forbiddenDirList[j].c_str(), (char *)limiteDirList[i].c_str()))
{
if(0 != strcmp("/", (char *)limiteDirList[i].c_str()))
{
publicList.push_back(forbiddenDirList[j]);
}
}
}
}
i++;
}
}
int main()
{
Op_directory M;
M.initIllegalPath();
M.findspecialPath();
int i = 0;
for(i = 0; i < publicList.size(); i++)
{
//printf("%s\n", publicList[i].c_str());
cout<<publicList[i]<<endl;
}
}
vector查找公共字符串只能在两个数组里找相同的元素,没法比较元素的公共子串。对C++不熟,记录一下,主要功能就是查找元素的公共子串
vector 查找公共子串
猜你喜欢
转载自blog.csdn.net/lyw13522476337/article/details/80758518
今日推荐
周排行