如何在C++中使用字符串作为变量名?

5

可能重复:
将字符串转换为变量名或变量类型

如何在C++中使用字符串值作为变量名

string listName = "hari";
string vectorName = "BF_vector_"+listName;
vector<string> vectorName;

vectorName.push_back("Some Value");

如何将vectorName的字符串值("BF_vector_hari")用作向量的变量名? 提前致谢。

6
就算是支持这个功能的语言,你也最好三思而后行,不要这样做! - user166390
4
不,你认为你需要这样做,但实际上不需要。无论你的问题是什么,都有更好的解决方法。 - Ed S.
4
术语本身就是重点。这表明了对C++工作方式的基本误解。他想要的无法按照他期望的方式完成,特别是动态的变量名称。您可以创建一个映射表,这是一个将名称映射到对象的对象,但它不会将它们映射到变量 - Nicol Bolas
@EthanSteinberg:我们在评论区中说了你在回答中提到的话;解决这个问题有更好的方法。如果可以的话,我会给你点赞的。 - Ed S.
3
令人惊讶的是,有如此多的人独立产生了做这种可怕、毫无意义的事情的欲望......这让我想知道我们的教育材料是否存在某种根本性的缺陷,无法解释变量的真正含义。 - Karl Knechtel
显示剩余5条评论
2个回答

9

在C++中不能这样做。

你可以使用一种形式的std::map<std::string, std::vector>将名称存储为向量映射。


谢谢。不想让代码变得更复杂。 - DreamCodeer

6
你不能这样做。
变量名是编译时的概念。字符串的内容是运行时的概念(虽然字符串常量有些不同,但这些也行不通)。除非你编写一个特定的映射层(将字符串名称映射到某个对象),否则你无法只使用字符串作为变量名。
同样,类型名称也不能这样用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接