【问题标题】:Open Files from current directory using a wildcard C++使用通配符 C++ 从当前目录打开文件
【发布时间】:2009-12-07 03:59:08
【问题描述】:

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

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

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

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

【问题讨论】:

标签: c++ file wildcard


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以使用 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
    

    【讨论】:

      猜你喜欢
      • 2022-01-16
      • 1970-01-01
      • 2014-02-10
      • 1970-01-01
      • 2011-05-25
      • 1970-01-01
      • 2013-08-14
      • 2013-04-30
      • 1970-01-01
      相关资源
      最近更新 更多