C++遍历文件夹下所有的wav文件(支持windows和Linux)

举报
墨理学AI 发表于 2022/01/13 23:16:02 2022/01/13
2.3k+ 0 0
【摘要】 参考文章 直接上代码(这个方法使用Visual Studio 2017 进行调试的话,会报 “找不到 #include <dirent.h>” 的错误,尚未解决,还希望大佬赐教): windo...

参考文章
直接上代码(这个方法使用Visual Studio 2017 进行调试的话,会报 “找不到 #include <dirent.h>” 的错误,尚未解决,还希望大佬赐教):
windows 下的 Dev-C++ 以及 Linux 环境下 是可以正确运行的

#include <iostream> 
#include <string> 
#include <vector> 
#include <fstream> 
#include <string.h>
#include <dirent.h>
	
using namespace std;

//  Find all files  ext is  wav
void getFileNames(string path,vector<string>& filenames)
{
    DIR *pDir;
    struct dirent* ptr;
	
    if(!(pDir = opendir(path.c_str()))){
        cout<<"Folder doesn't Exist!"<<endl;
        return;
    }
    while((ptr = readdir(pDir))!=0) {
    	if(0 == strcmp(strchr(ptr->d_name, '.'), ".wav")){
    		 filenames.push_back(path + "/" + ptr->d_name);
    	}

    }
    closedir(pDir);
} 
void fileTest(){
	
	int i = 0;
	string path = "H:\\audio";

	vector<string> files;
	
	getFileNames(path, files);

	int file_numbers = files.size();
	for (i = 0; i < file_numbers; ++i) {
		char file_path[100];
		strcpy(file_path, files[i].c_str());
		
		//strcpy_s( file_path, files[i].c_str());
		
		printf("%-4d", i+1);
		cout<<"  "<< file_path <<endl;
	}
		
}

int main()
{	
	fileTest();	
} 

  
 

Windows 下 的 C++遍历文件夹下所有的wav文件,Visual Studio 2017 可以调试,Linux下不支持

//头文件肯定用不到这么多的,我只是懒

#include <iostream>
#include <fstream>
#include <string.h>
#include <string>
#include<stdlib.h>
#include <io.h>
#include <bitset>
#include <iomanip>
#include <cmath>
#include <vector>
#include <algorithm>
#include <chrono>

int multipleFileWindows()
{
	int i = 0;
	int index = 0;

	string path = "H:\\noise";

	//Find all file whose ext is  .wav 
	string inPath = path  + "\\*.wav";

	long handle;
	struct _finddata_t fileinfo;

	handle = _findfirst(inPath.c_str(),&fileinfo);

	if(handle == -1)
		return -1;
	do
	{
		++index;
	} while (!_findnext(handle,&fileinfo));
// 存储文件路径到 files
	vector<string> files(index);
	handle = _findfirst(inPath.c_str(),&fileinfo);
	i = 0;
	string absolute_path = "";
	if(handle == -1)
		return -1;
	do
	{
		absolute_path = path + "\\" + fileinfo.name;
		files[i++] = absolute_path;

	} while (!_findnext(handle,&fileinfo));
	_findclose(handle);

	return 1;
}
  
 

文章来源: positive.blog.csdn.net,作者:墨理学AI,版权归原作者所有,如需转载,请联系作者。

原文链接:positive.blog.csdn.net/article/details/84136839

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。