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

发布于 2024-08-13 10:17:52 字数 255 浏览 5 评论 0原文

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

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

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

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

Is it possible to open files from a given directory in C/C++ using wildcard characters?

In the sense, If I want to open files that end with "to(node_id)" from a given current directory in my program.

Example : I need to open files whose filenames end with "to4".
Desired Output : It must open all the files in the current directory with filenames that end with "to4".
If files from0to4, from1to4, from2to4 & from3to4 exist in the current directory, they must be opened.

If it is not possible in C/C++, is there any other programming language which allows this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

匿名。 2024-08-20 10:17:52

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

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

Not in standard C++; you'll need to use either OS-specific function calls or a filesystem library like Boost.Filesystem.

In either case, you can get a list of files in a given directory and iterate over the list and open only the ones that match your parameters.

绿光 2024-08-20 10:17:52

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

You can do it with C and C++. On Windows, you might use [FindFirstFile and FindNextFile](http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx).

Your platform may already do it for you. If you're running Unix, say you run the following command:

$ ./myprog *to4

The shell first expands the wildcard and then executes myprog with the expanded arguments, equivalent to

$ ./myprog from0to4 from1to4 from2to4 from3to4

in your example directory.

You asked about other languages, so the code below is how you might do it with Perl:

#! /usr/bin/perl

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

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

For example, first create the files and then run a program that opens them:

$ 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文