std.getopt中的选项的多个值

时间:2014-09-14 14:42:08

标签: command-line-arguments d

就像一个例子,我制作了一个过滤掉文件空行并将结果写入新文件的程序:

// dlang filter out empty lines

import std.stdio;
import std.string;
import std.getopt;

string inputFile;
string outputFile;

void main(string[] args)
{
    getopt(args, "if", &inputFile, "of", &outputFile);

    File ifh = File(inputFile, "r");
    File ofh = File(outputFile, "w");

    foreach(line; ifh.byLine) {
        line = line.chomp;
        if(line != "") {
            ofh.writeln(line);
        }
    }
}

非常好,设置非常简单,但是如果我想为--if选项获取多个值会怎么样?

1 个答案:

答案 0 :(得分:2)

您可以使用string[]接收方:

string[] inputFiles
getopt(args, "if", &inputFiles);
foreach(f; inputFiles) {...}

然后在运行程序时提供多个--if选项,它们最终都在inputFiles

另请参阅:http://dlang.org/phobos/std_getopt.html - 数组选项