是否可以使用通配符在C/C++中從給定目錄打開文件?使用通配符從當前目錄打開文件C++
從某種意義上說,如果我想從我的程序中給定的當前目錄打開以「to(node_id)」結尾的文件。
示例:我需要打開文件名以「to4」結尾的文件。 所需輸出:它必須打開當前目錄中所有文件,文件名以「to4」結尾。 如果當前目錄中存在從0到4,從1到4,從2到4 & from3to4的文件,則必須打開它們。
如果在C/C++中不可能,是否還有其他允許這樣的編程語言?
是否可以使用通配符在C/C++中從給定目錄打開文件?使用通配符從當前目錄打開文件C++
從某種意義上說,如果我想從我的程序中給定的當前目錄打開以「to(node_id)」結尾的文件。
示例:我需要打開文件名以「to4」結尾的文件。 所需輸出:它必須打開當前目錄中所有文件,文件名以「to4」結尾。 如果當前目錄中存在從0到4,從1到4,從2到4 & from3to4的文件,則必須打開它們。
如果在C/C++中不可能,是否還有其他允許這樣的編程語言?
不是標準的C++;您需要使用特定於操作系統的函數調用或像Boost.Filesystem這樣的文件系統庫。
無論哪種情況,您都可以獲取給定目錄中的文件列表,並遍歷列表並僅打開與您的參數匹配的列表。
你可以用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
相關問題:http://stackoverflow.com/questions/1257721/can-i-use-a-mask-to-iterate-files-in-a-directory-with-boost。 – 2013-08-23 01:13:54