使用通配符C ++从当前目录打开文件

时间:2009-12-07 03:59:09

标签: c++ file wildcard

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

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

示例:我需要打开文件名以“to4”结尾的文件。 期望的输出:它必须打开当前目录中的所有文件,文件名以“to4”结尾。 如果文件从0到4,从1到4,从2到4& from3to4存在于当前目录中,必须打开它们。

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

2 个答案:

答案 0 :(得分:4)

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

在任何一种情况下,您都可以获取给定目录中的文件列表并遍历列表并仅打开与您的参数匹配的文件。

答案 1 :(得分: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