我如何才能将远离(在C++)恼人的菜单,如:建设命令行应用程序
(一)做一些 (B)做点其他的 (c)采取的是第三件事 (X)退出
基本上我希望能够运行该程序,然后执行诸如“calc 32/5”或“open data.csv”之类的操作,显然,我会为“calc”和“open”编写代码。只要向正确的方向推进就会很棒,我相信我能把它全部弄清楚,我只需要一些东西给google-fu。
我如何才能将远离(在C++)恼人的菜单,如:建设命令行应用程序
(一)做一些 (B)做点其他的 (c)采取的是第三件事 (X)退出
基本上我希望能够运行该程序,然后执行诸如“calc 32/5”或“open data.csv”之类的操作,显然,我会为“calc”和“open”编写代码。只要向正确的方向推进就会很棒,我相信我能把它全部弄清楚,我只需要一些东西给google-fu。
你应该拿起The C++ Programming Language,这是书上的C + +(还有其他人,但这是一个伟大的)。它有一个示例程序,分散在几章中,关于标记,解析参数和制作计算器。
我有这本书! (白色精装版,带有两个丝带书签!)。在第一章中,它超越了我,并且无法进入它,但它可能是时候让它再去一次。 – Silvanus
你想要的是一个命令行解析器。我不记得名字,但实际上有一个设计模式。但是,this site为您提供了一些可用于编写代码的示例代码。希望这不会给你太多的答案:)
我不知道他确实需要一个命令行解析器;他想在程序运行后输入命令。 –
啊,你说得对,我误解了。我知道这是一个设计模式,虽然... –
我想你想要做的是这样的:
string cmd;
cout << "Enter your command:" << endl;
cin >> cmd;
if(cmd == "open") {
// read file name and open file
} else if (cmd == "calc") {
// read and evaluate expression
} ...
虽然这取决于你想多么复杂的命令语言是一个更复杂的设计(甚至可能使用解析器生成器)可能是合适的。
而不是像a,b等寻找输入,只是要求通用输入。在空格处分割输入,在第一个上执行“开关”以将其与您的函数调用进行匹配,然后将其余部分视为参数。
您的菜单基于对getchar()
的调用吗?如果你想允许在处理之前输入整行,你可以使用fgets()
或者在C++ land中使用std::getline
。
有些人会将它们的C++类定义封装为Python类,方法是在C++中添加一个Python接口。
然后他们使用内置的cmd
库在Python中编写顶级解释器。
看看到:
什么操作系统? –
你想写一个解释器?大量的资源在这里:http://stackoverflow.com/questions/1669/learning-to-write-a-compiler和http://stackoverflow.com/questions/294852/references-needed-for-implementing-an-解释器在-CC。如果这是你的问题,那么第二个链接是重复的。 – dmckee
也http://stackoverflow.com/questions/41785/learning-resources-on-parsers-interpreters-and-compilers – dmckee