• ベストアンサー

ディレクトリ名取得

あるディレクトリを指定して、その下層にあるディレクトリの名前を取得するにはどのようにすればいいのでしょうか? 簡単にできる方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yama5140
  • ベストアンサー率54% (136/250)
回答No.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> を覗けば、関数仕様、構造体名等の違いが判るはず・・。

kerokk
質問者

お礼

無事下層ディレクトリの名前を取得することができました。 ご教授ありがとうございました。

その他の回答 (4)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.4

>#3 コードポータビリティの意識は「しておいた方がいい」とは思いますが、そのためにわざわざデフォルト開発環境を拡張する必要は全く感じません。もちろん私だってopendir()がVC++に標準で備わってればありがたく使わせてもらうでしょうけど。 「移植性がなくなる」といったところで同じことを同じように実現できるAPIはたいてい備わっているのだからそれほど神経質になることもないと思いますが?

  • eroermine
  • ベストアンサー率18% (83/444)
回答No.3

フリーライブラリの opendir() を使う。 ディレクトリのあるOSなら用意されてるのでは。 OS毎の独自の方法を使うと移植性が消えてしまう。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

.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

kerokk
質問者

お礼

アドバイスありがとうございます! さっそく試してみます。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

一般的な方法はありません。 OS・開発環境によりやり方が異なるので、これらを提示してください。

kerokk
質問者

お礼

記入し忘れていました、すいません。 OSはVista HomePremiumでコンパイラはVC++ 2005EEです。

関連するQ&A

専門家に質問してみよう