3

是否可以使用通配符从 C/C++ 中的给定目录打开文件?

从某种意义上说,如果我想从我的程序中的给定当前目录打开以“to(node_id)”结尾的文件。

示例:我需要打开文件名以“to4”结尾的文件。期望的输出:它必须打开当前目录中所有文件名以“to4”结尾的文件。如果当前目录下存在 from0to4, from1to4, from2to4 & from3to4 文件,则必须打开。

如果在 C/C++ 中不可能,是否有任何其他编程语言允许这样做?

4

2 回答 2

4

不在标准 C++ 中;您将需要使用特定于操作系统的函数调用或文件系统库,如 Boost.Filesystem。

无论哪种情况,您都可以获取给定目录中的文件列表并遍历该列表并仅打开与您的参数匹配的文件。

于 2009-12-07T04:02:09.837 回答
4

您可以使用 C 和 C++ 来完成。在 Windows 上,您可以使用 [FindFirstFileFindNextFile]( http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx)

您的平台可能已经为您做到了。如果您正在运行 Unix,假设您运行以下命令:

$ ./myprog *to4

shell首先扩展通配符,然后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 回答