如何创建交互式命令行界面?

时间:2016-12-09 06:55:11

标签: c++ shell command-line-interface

我正在尝试编写一个工具来比较我的文件,但我发现很难与之交互。我想支持2个操作:1)将我的文件加载到内存中2)比较已加载的文件。

这个想法如下所示

while (true) {
    getline(&line, &linesize, stdin);
    if (strlen(line) < 2) continue;
    token = strtok(line, DELIM);
    if (!strcmp(token,"load")) {
        puts("you want to load something");
    } else if (!strcmp(token, "compare")) {
        puts("you want to compare something");
    } else if (!strcmp(token, "exit")) {
        puts("exiting...");
        exit(1);
    } else {
        puts("Cannot parse, try again");
    }
}

在终端中,如果我想比较一些MyVeryLongFileNameFile.fooAnotherVeryLongFileNameFile.bar,我只需输入diff My\tab Ano\tab \enter即可自动为我完成文件名。

我想在我的程序中也有这些功能,比如使用tab来自动完成,使用up / down来选择以前的命令,等等。我应该如何实现这个目标?

1 个答案:

答案 0 :(得分:1)

使用ncurses.h library帮助您完成此操作。