2015-09-06 62 views
-2

好了,所以可以说我们有一个名为3个文本文件:henry.txtadam.txtjosh.txtC++采取从用户输入并执行命令

我们要打开这些文本文件,读取其中的内容和存储包含在文本文件转换成整数数组。

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

现在是采取从用户的输入,可以说用户类型:Start Henry

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

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

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

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

什么我就困惑是我将如何实现的东西,如Start henrySelect kEnd henry

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

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

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

+3

请不要用散文解释代码。发布您的真实代码的最小样本,这会再现您的问题。 –

回答

0

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

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

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

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

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

然后比较它与数组的长度和..任何你想要做的。

相关问题