我如何才能將遠離(在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