2011-11-04 141 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,如果你想在你的程序之上编写脚本,从库中提供现有的语言比编写你自己的语言更容易和更好。 –