21xrx.com
2025-04-02 13:36:24 Wednesday
文章检索 我的文章 写文章
C++读取文件夹下所有图片的方法
2023-07-08 17:23:19 深夜i     417     0
C++ 读取文件夹 图片 方法 文件夹下所有图片

C++是一种非常常用的编程语言,在其开发过程中,读取文件夹下的所有图片是一个常见问题。这篇文章将介绍如何使用C++来读取文件夹中的所有图片。

要实现读取文件夹中的所有图片,需要使用C++标准库中的两个重要类:`fstream`和`dirent`。`fstream`类用于读取文件,而`dirent`类用于读取目录。

首先,需要使用`DIR`类型的指针来打开一个目录。然后使用`readdir`函数读取该目录下的所有文件,判断文件类型是否是图片格式(如jpg、png等),如果是,则将其保存到一个字典中。

以下是一个简单的示例代码:

#include <dirent.h>
#include <iostream>
#include <fstream>
#include <map>
#include <string>
using namespace std;
int main() {
  // 打开目录
  DIR *dir;
  struct dirent *ent;
  dir = opendir("path/to/folder");
  if (dir == NULL)
    cout << "Failed to open directory" << endl;
    return -1;
  
  // 读取目录下的所有文件
  map<string, string> files;
  while ((ent = readdir(dir)) != NULL) {
    if (ent->d_type == DT_REG) { // 判断是否是普通文件
      string filename = ent->d_name;
      if (filename.substr(filename.find_last_of(".") + 1) == "jpg" ||
        filename.substr(filename.find_last_of(".") + 1) == "png") { // 判断文件类型是否是图片
        files[filename] = "path/to/folder/" + filename; // 将文件保存到字典中
      }
    }
  }
  // 使用字典中的文件
  for (auto file : files) {
    ifstream infile(file.second);
    // 处理文件
  }
  // 关闭目录
  closedir(dir);
  return 0;
}

上述代码使用`opendir`函数打开指定路径下的目录,然后使用`readdir`函数逐个读取目录下的所有文件。如果文件类型是普通文件,就判断其是否是图片格式,如果是,就将其保存到一个字典中。

在我们的示例代码中,将文件的名称作为字典的键,文件的完整路径作为字典的值。当我们需要使用这些文件时,只需要使用ifstream类以读取它们。

最后,使用`closedir`函数来释放指针并关闭目录。

在实际使用中,我们可以根据需要修改文件类型、保存方式等,以满足不同的需求。但以上示例代码应该为您提供了一个良好的起步点来开始处理文件夹下所有图片的任务。

  
  

评论区

请求出错了