- ベストアンサー
ディレクトリ名取得
あるディレクトリを指定して、その下層にあるディレクトリの名前を取得するにはどのようにすればいいのでしょうか? 簡単にできる方法があれば教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>コンパイラはVC++ 2005EEです。 でしたら、_findfirst, _findnext ( <io.h> ) という関数がありませんか?。 当方は、BorlandC++5.x です( _ が付いていない <dir.h> )。 Borland での使用例です(「方言」まるだしなので注意★)。 int iDone; struct ffblk sInfo; iDone = findfirst( "D:\\あるディレクトリ\\*.*", &sInfo, FA_DIREC ); while( ! iDone ){ if( ( '.' != sInfo.ff_name[0] ) && ( FA_DIREC & sInfo.ff_attrib ) ){ printf( "%s\n", sInfo.ff_name ); // 下層にあるディレクトリ (「その下」もなら、再帰呼出(冒頭部、要改変)) } iDone = findnext( &sInfo ); } >簡単にできる方法があれば教えてください。 上を VC++ に移植するだけ・・?。 ★<io.h> を覗けば、関数仕様、構造体名等の違いが判るはず・・。
その他の回答 (4)
- D-Matsu
- ベストアンサー率45% (1080/2394)
>#3 コードポータビリティの意識は「しておいた方がいい」とは思いますが、そのためにわざわざデフォルト開発環境を拡張する必要は全く感じません。もちろん私だってopendir()がVC++に標準で備わってればありがたく使わせてもらうでしょうけど。 「移植性がなくなる」といったところで同じことを同じように実現できるAPIはたいてい備わっているのだからそれほど神経質になることもないと思いますが?
- eroermine
- ベストアンサー率18% (83/444)
フリーライブラリの opendir() を使う。 ディレクトリのあるOSなら用意されてるのでは。 OS毎の独自の方法を使うと移植性が消えてしまう。
- D-Matsu
- ベストアンサー率45% (1080/2394)
.NET Framework2.0以降ならSystem.IO.DirectoryクラスのGetDirectoryメソッドを使えば可能です。 http://msdn.microsoft.com/ja-jp/library/c1sez4sc.aspx WIN32APIで実装するなら_find系関数で検索条件をサブディレクトリとして検索します。 http://msdn.microsoft.com/ja-jp/library/kda16keh(VS.80).aspx
お礼
アドバイスありがとうございます! さっそく試してみます。
- D-Matsu
- ベストアンサー率45% (1080/2394)
一般的な方法はありません。 OS・開発環境によりやり方が異なるので、これらを提示してください。
お礼
記入し忘れていました、すいません。 OSはVista HomePremiumでコンパイラはVC++ 2005EEです。
お礼
無事下層ディレクトリの名前を取得することができました。 ご教授ありがとうございました。