再请教个问题:在非GUI的console程序中,如何读取磁盘的目录阿?
有啥库什么的可以用??还是有别的办法?俺在俺c++的教材里没有找到这部分的内容,不知道该如何实现?还请各位老师指点一二阿 http://www.cplusplus.com/doc/tutorial/files/ 原帖由 perfectstock 于 5-12-2011 12:39 发表 http://www.freeoz.org/ibbs/images/common/back.gifhttp://www.cplusplus.com/doc/tutorial/files/
谢谢这位老师阿,不过我的目的是得到目录的信息,比如得到磁盘上某个目录下都有哪些文件,这个似乎fstream解决不了阿:( 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;
} 油饼, 你要有一个概念,C++只是一个语言, 很多日常你需要的功能是通过各种库来实现的, 而这些功能根据你得环境不同, 所需要的外部依赖也是不一样的, 有时候是需要调用系统API, 有时候用第三方库。
如果需要做比较复杂的东西时, 你很想希望有人专门为你准备好的这些形形色色的库, 那么这样的东西, 叫平台, 或者框架, 比如Qt, 就是给C++做GUI开发而准备的框架。所以, C++里,如何。。。。往往根据具体的环境, 有不同的答案。 原帖由 蒙面超人 于 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库里的一个函数么?
回复 #6 四香油饼 的帖子
不是,是STL的标准类库,transform的作用就是遍历一个容器里面元素 然后执行一个操作http://www.cplusplus.com/reference/algorithm/transform/
回复 #7 蒙面超人 的帖子
anyway,上面那个例子是抄别人的:$关于transform,有个简单的例子
std::string sl = "hello";
std::transform(sl.begin(), sl.end(), sl.begin(), toupper);
transform是遍历一个容器里面元素 然后执行一个操作
第1和2个参数是数据起始和结束位置(迭代器)
参数3是写入目标的起始位置
参数4(toupper)是执行的操作(函数)
返回结果就是HELLO 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 现在Boost库很流行了吗?想当年我刚刚离开IT行业的时候,Boost刚刚开始蹿红,那是10年前吧,当时还是MFC和Borland OWL的天下。。。好像现在Borland倒闭了? 如果我要问问题,肯定会先说明系统和开发环境的。
油饼这些信息都没提大家都看得懂,我却一头雾水,彻底OUT,太悲哀了:'( 原帖由 nnzdwxjy 于 8-12-2011 02:02 发表 http://www.freeoz.org/ibbs/images/common/back.gif
如果我要问问题,肯定会先说明系统和开发环境的。
油饼这些信息都没提大家都看得懂,我却一头雾水,彻底OUT,太悲哀了:'(
我之所以有这些问题,是因为最近要做一个嵌入式的文件系统,网上有一些c的资源,但我想用c++,所以要自己编了,准备先在PC上写好,再移植过去,所以就有了这个问题。
回复 #12 四香油饼 的帖子
我不太相信编译器厂家说的,他们的产品跨平台能力如何如何,哦,是一点也不相信。应用层的程序,相信他们的说法没什么问题。如果是底层应用,比如驱动、文件系统什么的,还是自己直接调用系统API来得放心,用别人的库,程序怎么当掉的都一头雾水。
页:
[1]