鱼C论坛

 找回密码
 立即注册
查看: 6803|回复: 37

关于opendir、readdir读取不了中文目录问题

[复制链接]
发表于 2023-7-24 20:53:30 | 显示全部楼层

回帖奖励 +2 鱼币

想入门的新人 发表于 2023-7-24 17:49
ANSI编码格式也不行。
可能没有及时回复,还请见谅。

通过使用opendir、readdir和closedir函数,可以读取目录下的文件夹名称并保存到数组中。下面是一个示例代码,你可以尝试在VS2019中运行它:


  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <dirent.h>

  5. int main() {
  6.     std::string folderPath = "目录路径"; // 替换为你要读取的目录路径

  7.     std::vector<std::string> folderNames;

  8.     DIR* dir;
  9.     struct dirent* entry;

  10.     // 打开目录
  11.     dir = opendir(folderPath.c_str());
  12.     if (dir != NULL) {
  13.         // 读取目录中的文件和文件夹
  14.         while ((entry = readdir(dir)) != NULL) {
  15.             // 排除当前目录和上级目录
  16.             if (std::string(entry->d_name) == "." || std::string(entry->d_name) == "..") {
  17.                 continue;
  18.             }

  19.             // 判断是否是文件夹
  20.             if (entry->d_type == DT_DIR) {
  21.                 folderNames.push_back(entry->d_name);
  22.             }
  23.         }

  24.         closedir(dir);
  25.     } else {
  26.         std::cout << "无法打开目录!" << std::endl;
  27.         return 1;
  28.     }

  29.     // 输出文件夹名称
  30.     for (const auto& folderName : folderNames) {
  31.         std::cout << folderName << std::endl;
  32.     }

  33.     return 0;
  34. }
复制代码


请将`目录路径`替换为你要读取的目录的实际路径。运行该代码后,文件夹名称将保存在`folderNames`数组中并进行输出。希望这可以帮助到你!如果还有其他问题,请随时提问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-24 21:14:23 | 显示全部楼层

回帖奖励 +2 鱼币

想入门的新人 发表于 2023-7-24 18:03
使用的是宽字符,那需要把vs的编码格式调为多字节字符集是吧,由于太久没接触这方面有点忘记了,还请指教 ...

是的,如果要处理宽字符,你需要将 Visual Studio 的编码格式设置为多字节字符集(Multibyte Character Set)。

你可以按照以下步骤进行设置:

1. 打开 Visual Studio 项目。
2. 在菜单栏中选择 "项目" -> "属性"。
3. 在属性对话框中,选择 "配置属性" -> "常规"。
4. 在右侧的 "字符集" 下拉菜单中,选择 "使用多字节字符集"。
5. 单击 "确定" 保存更改。

这样设置后,Visual Studio 将使用多字节字符集,可以正确处理宽字符。请注意,更改后可能需要重新编译项目。

希望这个解释能够帮助你。如有其他问题,请随时提问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-24 21:27:15 | 显示全部楼层
想入门的新人 发表于 2023-7-24 18:26
你好,感谢回复,刚刚试了一下你的程序,只能打印英文,不能打印中文,因为我的目录文件设置为英文所以可 ...

咳咳,如果解决了你的问题,可以给个最佳答案吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-24 21:43:51 | 显示全部楼层

感谢!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-24 21:54:32 | 显示全部楼层
想入门的新人 发表于 2023-7-24 18:52
不知什么原因读不出来,上面用一个大佬的读出来了但是是乱码,其他大佬的都读不出来中文文件夹,打印不出 ...

你换一个IDE试试?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-24 06:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表