将字符串转换为变量名称或变量类型

将字符串转换为变量名称或变量类型

是否可以通过执行以下操作将字符串转换为变量(反之亦然):


makeVariable("int", "count");

要么


string fruit;

cin >> fruit;    // user inputs "apple"

makeVariable(fruit, "a green round object");

然后能够通过执行以下操作来访问它:


cout << apple; //a green round object

提前致谢!


茅侃侃
浏览 1665回答 3
3回答

aluckdog

不,这是不可能的。这种功能在Ruby和Python等脚本语言中很常见,但C ++的工作方式与那些不同。在C ++中,我们尝试在编译时尽可能多地完成程序的工作。有时候我们可以在运行时做事,即使这样,优秀的C ++程序员也会在编译时找到一种方法来完成工作。如果您知道要创建变量,则立即创建它:int&nbsp;count;您可能不知道的是变量的值,因此您可以将其推迟到运行时:std::cin&nbsp;>>&nbsp;count;如果你知道你需要一组变量,但不知道究竟有多少变量会创建一个地图或一个矢量:std::vector<int>&nbsp;counts;请记住,变量的名称只不过是名称 - 您可以在以后引用该变量。在C ++中,推迟在运行时分配变量名称是不可能&nbsp;也没有用的。所有这一切都会使您的代码更复杂,程序更慢。

万千封印

初学程序员就每种语言提出这个问题。有一组计算机语言,这个问题的答案是“是”。这些是动态的交互式语言,如BASIC,Lisp,Ruby,Python。但想一想:变量名只存在于代码中,以方便程序员。如果有人随后在新代码中键入变量的名称,则在程序运行时定义新变量才有意义。这对于交互式语言环境来说是正确的,对于像C ++或Java这样的编译语言则不然。在C ++中,当程序运行时,并且会创建虚构的新变量,没有人可以输入将使用该新变量的代码。你真正想要的是能够在运行时将名称与对象相关联,这样代码 - 而不是人 - 可以使用该名称来查找对象。正如其他人已经指出的那样,mapC ++标准库的特性为您提供了这种能力。
打开App,查看更多内容
随时随地看视频慕课网APP