四香油饼 发表于 5-12-2011 11:17:46

再请教个问题:在非GUI的console程序中,如何读取磁盘的目录阿?

有啥库什么的可以用??还是有别的办法?俺在俺c++的教材里没有找到这部分的内容,不知道该如何实现?还请各位老师指点一二阿

perfectstock 发表于 5-12-2011 12:39:24

http://www.cplusplus.com/doc/tutorial/files/

四香油饼 发表于 5-12-2011 13:28:25

原帖由 perfectstock 于 5-12-2011 12:39 发表 http://www.freeoz.org/ibbs/images/common/back.gif
http://www.cplusplus.com/doc/tutorial/files/

谢谢这位老师阿,不过我的目的是得到目录的信息,比如得到磁盘上某个目录下都有哪些文件,这个似乎fstream解决不了阿:(

蒙面超人 发表于 5-12-2011 13:45:48

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 17:41:52

油饼, 你要有一个概念,C++只是一个语言, 很多日常你需要的功能是通过各种库来实现的, 而这些功能根据你得环境不同, 所需要的外部依赖也是不一样的, 有时候是需要调用系统API, 有时候用第三方库。

如果需要做比较复杂的东西时, 你很想希望有人专门为你准备好的这些形形色色的库, 那么这样的东西, 叫平台, 或者框架, 比如Qt, 就是给C++做GUI开发而准备的框架。所以, C++里,如何。。。。往往根据具体的环境, 有不同的答案。

四香油饼 发表于 5-12-2011 18:17:08

原帖由 蒙面超人 于 5-12-2011 13:45 发表 http://www.freeoz.org/ibbs/images/common/back.gif
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 22:53:52

回复 #6 四香油饼 的帖子

不是,是STL的标准类库,transform的作用就是遍历一个容器里面元素 然后执行一个操作

http://www.cplusplus.com/reference/algorithm/transform/

蒙面超人 发表于 5-12-2011 22:57:50

回复 #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 13:08:28

In MFC, you can try CFileFind
or
http://stackoverflow.com/questions/612097/how-can-i-get-a-list-of-files-in-a-directory-using-c-or-c

电视机 发表于 8-12-2011 01:58:17

现在Boost库很流行了吗?想当年我刚刚离开IT行业的时候,Boost刚刚开始蹿红,那是10年前吧,当时还是MFC和Borland OWL的天下。。。好像现在Borland倒闭了?

电视机 发表于 8-12-2011 02:02:59

如果我要问问题,肯定会先说明系统和开发环境的。

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

四香油饼 发表于 8-12-2011 11:39:47

原帖由 nnzdwxjy 于 8-12-2011 02:02 发表 http://www.freeoz.org/ibbs/images/common/back.gif
如果我要问问题,肯定会先说明系统和开发环境的。

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

我之所以有这些问题,是因为最近要做一个嵌入式的文件系统,网上有一些c的资源,但我想用c++,所以要自己编了,准备先在PC上写好,再移植过去,所以就有了这个问题。

电视机 发表于 8-12-2011 12:01:13

回复 #12 四香油饼 的帖子

我不太相信编译器厂家说的,他们的产品跨平台能力如何如何,哦,是一点也不相信。

应用层的程序,相信他们的说法没什么问题。如果是底层应用,比如驱动、文件系统什么的,还是自己直接调用系统API来得放心,用别人的库,程序怎么当掉的都一头雾水。
页: [1]
查看完整版本: 再请教个问题:在非GUI的console程序中,如何读取磁盘的目录阿?