如图,以文件为例:
得到相对路径:
核心代码:
int RelativePath(const std::string& strDir, const std::string& strSavePath, bool bJustDir, const std::string strSuffixs)
{
if (strDir.length() == 0 || strSavePath.length() == 0)
{
return -1;
}
if (!bJustDir && strSuffixs.length() == 0)
{
return -1;
}
//读取当前目录下的目录,并且保存相对路径,以半角;保存
std::vector<std::string> vDirs;
size_t nDirNum = getDirs(strDir, vDirs, false);
std::string vSaveContent;
for (size_t i = 0; i < nDirNum; ++i)
{
const std::string strCurDir = vDirs[i];
std::string strSaveLine = CStdStr::ReplaceAllDistinct(strCurDir, CStdStr::AddSlashIfNeeded(strDir), ".\\");
vSaveContent += strSaveLine + ';';
}
if (!bJustDir)
{
//添加需要保存的文件
std::vector<std::string> vFiles;
size_t nFileNum = getFiles(strDir, vFiles, strSuffixs.c_str(), false);
for (size_t i = 0; i < nFileNum; ++i)
{
const std::string strCurFile = vFiles[i];
std::string strSaveLine = CStdStr::ReplaceAllDistinct(strCurFile, CStdStr::AddSlashIfNeeded(strDir), ".\\");
vSaveContent += strSaveLine + ';';
}
}
CStdFile::SaveTXTFile(strSavePath, vSaveContent);
ShellExecute(NULL,_T("open"), CStdStr::s2ws(strSavePath).c_str() ,NULL,NULL, SW_SHOW);
return 0;
}
如需程序或者完整代码,欢迎联系我。