• ベストアンサー

ファイル名の取得について

επιστημη(@episteme)の回答

回答No.1

#include <windows.h> #include <iostream> #include <string> #include <iterator> #include <set> #include <algorithm> template<typename OutIter> OutIter enumfiles(const std::string& path, OutIter result) { WIN32_FIND_DATA fd; HANDLE handle = FindFirstFile(path.c_str(), &fd); if ( handle == INVALID_HANDLE_VALUE ) return result; do { *result++ = fd.cFileName; } while ( FindNextFile(handle, &fd) ); FindClose(handle); return result; } // dir_a, dir_b の双方にあるファイル名を出力。 int main(int argc, char* argv[]) { std::set<std::string> fn1, fn2; enumfiles("d:\\dir_a\\*.*", std::inserter(fn1,fn1.end())); enumfiles("d:\\dir_b\\*.*", std::inserter(fn2,fn2.end())); std::set_intersection(fn1.begin(), fn1.end(), fn2.begin(), fn2.end(), std::ostream_iterator<std::string>(std::cout,"\n")); return 0; }

mk1234
質問者

お礼

epistemeさん 回答ありがとうございます。 私にとっては、ちょっと見慣れないコードが多いのであとでゆっくり理解します。

mk1234
質問者

補足

自分でも当然調べますが、もう少し基本的な方法として、 例えばキーボードから任意の個数の任意の長さの文字列を一つ入力するたびにエンターキーを押すような場合、配列に文字列を格納するにはどのようにすれば良いのでしょう? 必要配列の個数と必要文字列長さを入力時に動的に求める方法が知りたいです。 <補足> 多分判っている人にとっては、すごく基本的なことのような気がするのですが、私は今までこのようなことをやったことがないので”教えてあげましょう”と思われた方よろしくお願いします。

関連するQ&A

  • フォルダ内のファイル名を取得する

    windows 7なのですが、フォルダ内にあるファイル名をテキストとしてすべて一括で取得する方法はないでしょうか? また、フォルダの中にさらに複数のフォルダがあっても、上の階層のフォルダからすべてファイル名を取得する方法はないでしょうか? よろしくお願いいたします。

  • C# ファイルサイズの取得(ファイル名ではない)

    ファイルサイズ取得で検索するとファイル名のサイズを取得する方法ばかりで実際に存在しているファイルの大きさと合っていないのですが、どのようにコードを書けば良いでしょうか?

  • ファイル名の始めに“.”をつけてしまい消えた

    AndroidのSDマネージャーで隠しフォルダを作るときに、フォルダ名ではなく、ファイル名の最初に“.”を付けてしまい、すべてのファイルを表示にしても見れなくなりました。 消えてしまったのでしょうか?

  • フォルダーの中のファイル名を取り出す

    フォルダーの中のファイル名を取り出し配列に格納する方法はありますか?

  • フォルダ内にあるファイル名を取得したい

    cを利用して、指定したフォルダの中にある全てのファイルの名前を取得するプログラムを作りたいのですが、適した関数がわかりません。 指定するフォルダはあらかじめ決めうちで、その中には.txtのファイルのみを格納します。 どなたか教えてください。できれば自分で作りたいのでヒントをください。お願いします。 VisualC++.netを使っています。OSはXPです。

  • delphi5でのディレクトリ内ファイル名の取得

    こんにちは。質問があります。 delphiのアプリケーションであるディレクトリのフォルダ内のファイルを 別のディレクトリのフォルダ内に名前を変えてコピーしようと考えています。 基本的にコピー元のディレクトリ名はわかりません。 コピー先のディレクトリは存在しなければ、名前を指定して作成し、その中に名前を変更したファイルを格納する流れです (わかりづらいかも・・・) フォルダが存在しなければ作成したり、ファイル名を変更してコピーする のはわかったのですが、コピー元のディレクトリ内のファイル(もしくはディレクトリ)名を取得することがわかりません。 全てソースの中でプログラムしたいと考えています。(VCLは使用しない) こんなんでもわかっちゃったりする方がいらっしゃいましたら、 どうか愛の手を・・・

  • フォルダの全ファイル名を自動的に取り込むには

    ビジュアルベーシク(VB5)でドライブ、フォルダ、ファイルの各アイコンをフォームに配置して動作させると、手動でファイル名を取得できますが、フォルダを指定したらその中のファイル名全てを、自動的に文字配列変数に取り込むにはどうしたらよいでしょうか?よろしくお願いします。

  • フォルダに入っているファイルの取得

    フォルダ/abcに入っている、JPGの画像のファイルを配列@defに取得するコードをお願いします。

    • ベストアンサー
    • Perl
  • ファイルの拡張子を取得したい

    あるフォルダにファイルが存在しています。ファイルが存在していることは確認できています。 ファイル名まではわかっているのですが、拡張子がわかりません。 実在するファイルの拡張子を取得する方法を教えてください。

    • 締切済み
    • PHP
  • 同じファイル名なのに同じと判定しない

    重複データを削除するために、有名どころであるFileManyというフリーソフトを使っているのですが、同じファイル名なのに同じと判定しないことがあります。 エクスプローラーや別の同様なアプリでは同じ名前と判定します。 人の目で見ても当然同じファイル名です。 フォルダ階層も深くないですし、ファイル数も1個で比較してもダメです。 プログラムのコードは知りませんが、普通に考えて、パスからファイル名を抜き出し、if文で比較しているだけだと想像します。 ほぼ正しく動くのに、例外的に動かないことが(バグ)あると困りますよね。 なぜこんなことが起きてしまうのでしょうか?