【发布时间】:2015-01-30 06:51:08
【问题描述】:
我正在编写一个 C++ 代码,它遍历目录的所有条目并决定使用dirent.h。由于我使用的是 C++,因此我决定使用 C++ 标准来包含 C 库文件 [即在库名称前加上 c 前缀并删除末尾的 .h]
在不添加任何功能的情况下,我决定编译我的程序一次,看看是否真的存在cdirent 或sys/cstat。 g++ 抛出一个错误,告诉我这些文件不存在
#include <iostream>
#include <cdirent>
#include <sys/cstat>
#include <sys/ctypes>
using namespace std;
int main()
{
}
dummy.cpp:2:19: error: cdirent: No such file or directory
dummy.cpp:3:21: error: sys/cstat: No such file or directory
dummy.cpp:4:22: error: sys/ctypes: No such file or directory
按照page 中给出的关于在哪里查找标准 C++ 头文件的建议,我可以找到 cstdio、cstdlib、ctime 等,这让我想到了我的问题
- C 标准库文件何时转换为 C++ 标准库文件?
- 应如何在程序中包含此类文件?这里的page 只讲标准头文件和非标准头文件。但我相信
dirent.h是一个标准库文件[如果我错了,请纠正我]
提前感谢所有建议
【问题讨论】:
-
使用 Boost 文件系统,而不是 Posix 文件。 Boost 文件系统计划包含在 C++14(当前标准)的标准库中,但我记得它没有被添加。它肯定会在 C++17 中出现,然后希望删除那些愚蠢的错误。