3

ワイルドカード文字を使用して、C / C ++の特定のディレクトリからファイルを開くことは可能ですか?

ある意味で、プログラム内の特定の現在のディレクトリから「to(node_id)」で終わるファイルを開きたい場合。

例:ファイル名が「to4」で終わるファイルを開く必要があります。必要な出力:「to4」で終わるファイル名で現在のディレクトリ内のすべてのファイルを開く必要があります。ファイルfrom0to4、from1to4、from2to4、およびfrom3to4が現在のディレクトリに存在する場合は、それらを開く必要があります。

C / C ++でそれが不可能な場合、これを可能にする他のプログラミング言語はありますか?

4

2 に答える 2

4

標準のC++ではありません。OS固有の関数呼び出しまたはBoost.Filesystemなどのファイルシステムライブラリを使用する必要があります。

いずれの場合も、特定のディレクトリ内のファイルのリストを取得し、リストを反復処理して、パラメータに一致するファイルのみを開くことができます。

于 2009-12-07T04:02:09.837 に答える
4

C と C++ でそれを行うことができます。Windows では、 [FindFirstFileおよびFindNextFile]( http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx)を使用できます。

お使いのプラットフォームがすでにそれを行っている場合があります。Unix を実行している場合は、次のコマンドを実行するとします。

$ ./myprog *to4

シェルは最初にワイルドカードを展開myprogしてから、展開された引数を使用して実行します。

$ ./myprog from0to4 from1to4 from2to4 from3to4

サンプルディレクトリにあります。

あなたは他の言語について尋ねたので、以下のコードは Perl でそれを行う方法です:

#! /usr/bin/perl

foreach my $file (<*to4>) {
  open my $fh, "<", $file or die "$0: open $file: $!\n";

  while (<$fh>) {
    print "$file: $_";
  }
}

たとえば、最初にファイルを作成してから、それらを開くプログラムを実行します。

$ for i in 0 1 2 3; do
> echo file $i > from${i}to4
> done

$ ./opento4s
from0to4: file 0
from1to4: file 1
from2to4: file 2
from3to4: file 3
于 2009-12-07T04:24:11.843 に答える