FreeOZ论坛

标题: 再请教个问题:在非GUI的console程序中,如何读取磁盘的目录阿? [打印本页]

作者: 四香油饼    时间: 5-12-2011 10:17
标题: 再请教个问题:在非GUI的console程序中,如何读取磁盘的目录阿?
有啥库什么的可以用??还是有别的办法?俺在俺c++的教材里没有找到这部分的内容,不知道该如何实现?还请各位老师指点一二阿
作者: perfectstock    时间: 5-12-2011 11:39
http://www.cplusplus.com/doc/tutorial/files/
作者: 四香油饼    时间: 5-12-2011 12:28
原帖由 perfectstock 于 5-12-2011 12:39 发表
http://www.cplusplus.com/doc/tutorial/files/


谢谢这位老师阿,不过我的目的是得到目录的信息,比如得到磁盘上某个目录下都有哪些文件,这个似乎fstream解决不了阿
作者: 蒙面超人    时间: 5-12-2011 12:45
There's no standard C++ way to emulate this because there is no standard C++ functionality of reading the contents of a directory. What you can do is use Boost.Filesystem:

#include <boost/filesystem.hpp>
using namespace boost::filesystem;

struct pathname_of {
    string operator()(const directory_entry& p) const {
        return p.path().filename();
    }
};

int main(int argc, char* argv[])
{
    transform(directory_iterator("."), directory_iterator(),
              ostream_iterator<string>(cout, "\n"),
              pathname_of());
    return 0;
}
作者: coredump    时间: 5-12-2011 16:41
油饼, 你要有一个概念,C++只是一个语言, 很多日常你需要的功能是通过各种库来实现的, 而这些功能根据你得环境不同, 所需要的外部依赖也是不一样的, 有时候是需要调用系统API, 有时候用第三方库。

如果需要做比较复杂的东西时, 你很想希望有人专门为你准备好的这些形形色色的库, 那么这样的东西, 叫平台, 或者框架, 比如Qt, 就是给C++做GUI开发而准备的框架。  所以, C++里,如何。。。。往往根据具体的环境, 有不同的答案。
作者: 四香油饼    时间: 5-12-2011 17:17
原帖由 蒙面超人 于 5-12-2011 13:45 发表
There's no standard C++ way to emulate this because there is no standard C++ functionality of reading the contents of a directory. What you can do is use Boost.Filesystem:

#include  
using namespa ...


谢谢超人,有一点看不懂,这个transform是boost库里的一个函数么?
作者: 蒙面超人    时间: 5-12-2011 21:53
标题: 回复 #6 四香油饼 的帖子
不是,是STL的标准类库,transform的作用就是遍历一个容器里面元素 然后执行一个操作

http://www.cplusplus.com/reference/algorithm/transform/
作者: 蒙面超人    时间: 5-12-2011 21:57
标题: 回复 #7 蒙面超人 的帖子
anyway,上面那个例子是抄别人的
关于transform,有个简单的例子

std::string sl = &quot;hello&quot;;
std::transform(sl.begin(), sl.end(), sl.begin(), toupper);  

transform是遍历一个容器里面元素 然后执行一个操作
第1和2个参数是数据起始和结束位置(迭代器)
参数3是写入目标的起始位置
参数4(toupper)是执行的操作(函数)

返回结果就是HELLO
作者: perfectstock    时间: 6-12-2011 12:08
In MFC, you can try CFileFind
or
http://stackoverflow.com/questio ... ectory-using-c-or-c
作者: 电视机    时间: 8-12-2011 00:58
现在Boost库很流行了吗?想当年我刚刚离开IT行业的时候,Boost刚刚开始蹿红,那是10年前吧,当时还是MFC和Borland OWL的天下。。。好像现在Borland倒闭了?
作者: 电视机    时间: 8-12-2011 01:02
如果我要问问题,肯定会先说明系统和开发环境的。

油饼这些信息都没提大家都看得懂,我却一头雾水,彻底OUT,太悲哀了
作者: 四香油饼    时间: 8-12-2011 10:39
原帖由 nnzdwxjy 于 8-12-2011 02:02 发表
如果我要问问题,肯定会先说明系统和开发环境的。

油饼这些信息都没提大家都看得懂,我却一头雾水,彻底OUT,太悲哀了


我之所以有这些问题,是因为最近要做一个嵌入式的文件系统,网上有一些c的资源,但我想用c++,所以要自己编了,准备先在PC上写好,再移植过去,所以就有了这个问题。
作者: 电视机    时间: 8-12-2011 11:01
标题: 回复 #12 四香油饼 的帖子
我不太相信编译器厂家说的,他们的产品跨平台能力如何如何,哦,是一点也不相信。

应用层的程序,相信他们的说法没什么问题。如果是底层应用,比如驱动、文件系统什么的,还是自己直接调用系统API来得放心,用别人的库,程序怎么当掉的都一头雾水。




欢迎光临 FreeOZ论坛 (https://hioz.im/ibbs/) Powered by Discuz! X3.2