2011-11-04 139 views
0

如何使用字符串變量爲新變量或對象命名?C++使用字符串變量調用並給其他東西命名

例如:我編譯程序後,輸入文本「a_name」,按[Enter],然後聲明一個名爲「a_name」的可變名稱或對象。再例如:我輸入文本「a_name」,按[Enter],然後名爲「a_name」的變量顯示它的值。

是否有任何特殊的庫需要下載?或者是否有包含在編譯器文件中的?如果有必須下載的庫,哪些庫最容易理解和使用?我正在使用Visual C++,但使用庫Iostream,Math,String,e.t.c.從DevC++編譯器複製而來。

+1

http://www.cplusplus.com/forum/beginner/7396/ –

+1

你輸入文字「a_name」,究竟是哪裏?你是否真的試圖寫一些口譯員? – Alnitak

+0

@MithunSasidharan:我想那不是他要問的。 – m0skit0

回答

4

據我所知你不能。變量名稱在編譯時設置,而不是在運行時設置。 C++沒有被解釋(像Perl,Python或JavaScript),因此它不能在運行時評估表達式。 C++是學校。

我建議你使用數組或C++ list/map類來嘗試模擬這種行爲。

+0

是的,C++不支持命名變量/參數。 – zeller

2

你不能像這樣聲明變量,但你可以做的是使用map,其中映射關鍵字是你想要引用的變量的名稱,並且映射中具有該關鍵字的值,是變量的值。

std::map<std::string, std::string> variables;

顯然,值可以是任何類型的,而不是就像我在這裏用的字符串,可以使用doubleintbool或任何適合您的需求,或者如果你需要不同類型的你可能正如James Kanze所建議的那樣,甚至可以使用Boost variant或其他類似的類。

瞭解更多有關地圖位置:http://www.sgi.com/tech/stl/Map.html這裏:http://www.cplusplus.com/reference/stl/map/

你可以使用任何類型的地圖,而是使用一種散列存儲的關鍵可能是你最好的選擇的地圖。 STL hash_map:http://www.sgi.com/tech/stl/hash_map.html

6

一旦程序編譯完成,您就不能將「變量」添加到程序中。你 可以得到或多或少相同的效果,但是,通過使用std::map,與 一個字符串作爲關鍵類型。

當然,您將需要決定新變量應具有哪些類型,因此您知道將其映射到哪種類型。如果可能有多個類型,則可能會有用,如boost::variant。 (請注意,與名稱集不同,可能的類型集必須在編譯時完全定義。)

1

所以基本上你要做的是在你的C++程序中包含一個解釋語言。

有許多語言支持被嵌入到一個C++程序Lua,JavaScript,Python等等。

+0

+1,如果你想在你的程序之上編寫腳本,從庫中提供現有的語言比編寫你自己的語言更容易和更好。 –