C++bosst遍历文件目录,根据文件名返回文件路径。

  • VS2071安装Boost库

  • 安装boost库

  • 接着安装boost_system-vc140(可根据开发需求,更改版本)

  • 废话不多说,上代码
// 测试程序.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
// 函数功能:匹配某个目录下的文件,返回文件路径

#include "pch.h"
#include <string>
#include <iostream>
#include <boost/filesystem.hpp>

using namespace std;

string strHeadPath = "";

//匹配文件,返回文件所在路径
bool ReadFilePath(const string &strFilePath, string strCmpFile)
{

	std::string::size_type nPos = strFilePath.rfind("\\");
	if (std::string::npos == nPos)
	{
		return false;
	}
	string strFileName = strFilePath.substr(nPos+1, strFilePath.size());

	if (strFileName == strCmpFile)
	{
		strHeadPath = strFilePath;//strHeadPath定义成全局变量
		return true;
	}
	return false;
}


//遍历文件,寻找文件名对应路径
//参数1:文件根路径  参数2:要查找的文件名
void GetFileNameFromDir(string rootPath, string strCmpFile)
{
	boost::filesystem::path dir(rootPath);
	if (boost::filesystem::exists(dir)) // 判断路径是否存在
	{
		boost::filesystem::directory_iterator itEnd;
		boost::filesystem::directory_iterator itDir(dir);
		std::string strNewRoot("");
		for (; itDir != itEnd; itDir++) // 遍历路径下所有文件
		{
			strNewRoot = itDir->path().string();
			if (boost::filesystem::is_directory(strNewRoot.c_str())) // 判断文件是否是文件夹
			{

				GetFileNameFromDir(strNewRoot, strCmpFile);
			}
			else {
				ReadFilePath(strNewRoot, strCmpFile);
			}
		}
	}
}


int main()
{
	GetFileNameFromDir("D:\\test", "haha.txt");
	cout << strHeadPath.c_str() << endl;
	return 0;
}

  

 
  • 测试结果

  •  总结:为了凑够150字的随笔发个小总结,其实没毛总结的,此函数可以封装成dll,实用的小函数,c++本作者也是边学边写,平时比较忙后续偶尔会发一些数据安全相关的技术文章,凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字凑字。

 

posted @ 2019-10-27 14:58  电竞码农  阅读(648)  评论(0编辑  收藏  举报