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

时间:2015-09-06 21:26:51

标签: c++ user-input

好的,我们假设有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()。从这里再次检查用户输入的输入中是否包含诸如亨利,乔什或亚当之类的单词。如果找到其中一个单词,则会打开与该名称关联的文本文件,并将整数存储到数组中。

现在我不知道是否有更好的方法可以做到这一点,但如果有,请向我解释。

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

1 个答案:

答案 0 :(得分:0)

那么,当你检查命令的前六个字母是否是"选择"您可以使用方法substr()返回用户编写的数字,如:

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

请记住,如果用户写了"选择123" (末尾有一个空格),你的字符串numAsString也会有空格!

下一步是将字符串解析为整数,你可以使用atoi(说实话,我不能想到另一种方式,可能必须有一个......)。我的想法是:

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

然后将它与数组的长度进行比较,以及......无论你想做什么。