如何从C或C ++代码中确定目录中的文件列表?

我不能执行'ls'命令并从我的程序中解析结果。

暴躁的蛆宝宝暴躁的蛆宝宝提问于
akjok54stay hungry stay foolish回答于

在小而简单的任务中,我不使用boost,我使用dirent.h,它也可用于Windows:

DIR *dir;
struct dirent *ent;
if ((dir = opendir ("c:\\src\\")) != NULL) {
  /* print all the files and directories within directory */
  while ((ent = readdir (dir)) != NULL) {
    printf ("%s\n", ent->d_name);
  }
  closedir (dir);
} else {
  /* could not open directory */
  perror ("");
  return EXIT_FAILURE;
}

它只是一个小的头文件,并且不需要使用像boost这样的基于模板的大方法就可以完成大多数简单的工作(无需冒犯,我喜欢提升!)。

Windows兼容层的作者是Toni Ronkko。在Unix中,它是一个标准的头文件。

2017年更新:

在C ++ 17中,现在有一种正式的方式来列出文件系统的文件:std::filesystem。下面是源代码Shreevardhan的一个很好的答案:

#include <string>

#include <iostream>

#include <filesystem>

namespace fs = std::filesystem;

int main()

{

std::string path = "path_to_directory";

for (auto & p : fs::directory_iterator(path))

std::cout << p << std::endl;

}

如果你正在使用C ++ 17方法,请考虑加强他的答案。

回答过的其他问题

个人用户如何有效防止DOS攻击?

akjok54stay hungry stay foolish
你说得很对,完全杜绝掉是不可能的,最好的办法是拼性能,但这个办法需要花费掉大量的金钱,你被人攻击这种事情,我也受过这种苦,所以我俩可以算同道中人。按你说的有效的话,办法还是非常多的,但每个人的办法不同,这个主要需要根据具体的攻击场景来判断,我在这里给你一些案例吧,希望对你有所帮助...... 展开详请

推送地址增加了&txAddTimestamp=2小程序的onPlayEvent 发现并没有每秒通知?

akjok54stay hungry stay foolish
你的问题在这里:&txAddTimestamp=2这个不是数字2,而是数字1,你填错误了,应该增加这个&txAddTimestamp=1,后面是1. 加注ntp时间戳在推流 url 之后添加参数 &txaddtimestamp=1 参数,服务器会每隔1s向你的直播流中打入一个带有...... 展开详请

前端请求报错?

akjok54stay hungry stay foolish

使用万象优图过程中如何生成正确的鉴权签名?

akjok54stay hungry stay foolish
先使用对应参数进行拼接 拼接格式如下: 拼接多次有效签名串: a=[appid]&b=[bucket]&k=[SecretID]&e=[expiredTime]&t=[currentTime]&r=[rand]&u=[userid]&f=[fileid] 拼接单次有效签名串: a...... 展开详请

大叔变软萌女声,实时语音趣味变声是如何实现与应用的?

akjok54stay hungry stay foolish
在音频后处理领域,语音消息的变声不难,但是在QQ电话、“吃鸡”中实时变声,是个大挑战。要保证在用户无感的超低延时下对人声进行特殊处理,怎么办呢? 为了降低时延,技术团队想了不少办法:数据采集阶段,用自研前处理替换系统的前处理,把时延降低了30ms;处理过程中,支持更少长度的处理(...... 展开详请

哪里可以设置home/uftp访问权限为a-w?

akjok54stay hungry stay foolish
需要登录你的服务器,所以是在你的服务器里面进行设置,设置访问权限的命令为如下: chmod a-w textfile textfile为你要设置的ftp目录 ... 展开详请

所属标签

扫码关注云+社区

领取腾讯云代金券