c ++从用户那里获取输入并执行命令

c++ taking input from user and executing command

好吧,假设我们有 3 个文本文件,名称为:henry.txt adam.txt josh.txt

我们要打开这些文本文件,读取内容并将文本文件中包含的整数存储到一个数组中。

因此,例如 henry.txt 包含整数:100, 200, 300, 400, 500 全部在不同的行上。

现在关于从用户那里获取输入,假设用户键入:Start Henry

这将读取文本文件并将每一行的整数存储到一个数组中。

然后用户可以键入:Select k,这将打印出数组中的第 k 项。或者用户可以键入 Select max,这将打印数组中的最后一个元素。

最后用户输入:End henry 这将关闭文件并释放任何动态分配的内存。

我已经知道如何编写代码来获取文本文件中的整数并将它们存储到数组中等等。

我感到困惑的是我将如何实现诸如 Start henry Select kEnd henry.

之类的东西

对于 Start henry 我尝试使用 std::string::find 检查单词 "Start" 是否包含在存储用户输入的字符串中。如果找到 "Start",则它调用函数 Start()。它从这里再次检查用户输入的输入中是否包含 henry、josh 或 adam 等词。如果找到其中一个单词,则它会打开与该名称关联的文本文件并将整数存储到一个数组中。

现在不知道有没有更好的方法,如果有请解释一下。

我真正的问题是当用户输入 Select k 时。我尝试实现与 Start 相同的方法,但我不知道如何检查是否输入了数组中的某个元素,或者是否输入了 max

那么,当您检查命令的前六个字母是否为 "Select" 时,您可以使用方法 substr() 来 return 用户写入的数字,如:

std::string numAsString = command.substr(7);

请记住,如果用户写 "Select 123 "(末尾有一个 space),您的字符串 numAsString 也会有一个 space!

下一步是将字符串解析为整数,您可以为此使用 atoi(老实说,我想不出其他方法,可能必须有一个...)。我的想法是:

int num = atoi(numAsString.c_str());

然后将它与数组的长度进行比较,然后..你想做的任何其他事情。