c++ - 在c++中将字符串变成变量真的不可能吗

标签 c++ c string compile-time

两者Convert string to variable name or variable typeHow to use a string as a variable name in C++?答案说编译后不能使用字符串作为变量。然而,他们提到Python等高级语言可以。据我了解,Python是用C编写的 https://softwareengineering.stackexchange.com/questions/20988/why-is-python-written-in-c-and-not-in-c

如果Python是用C编写的,并且它可以使用字符串作为变量,那么为什么人们不能在C++中这样做。

我想这个问题没有说清楚。从评论中的类比来看,

如果Python是由C语言编写的,我会假设有一些函数可以让Python变得动态。那么为什么不能在没有 Python 的所有其他部分的情况下编写该功能呢?

最佳答案

CPython 实现 - 用 C 编写的 Python 实现 - 使用 C 语言来实现某种变量查找,使 Python 的行为类似于 Python,而不是像 C 或 BASIC。

所以,你当然可以使用C或C++来实现字符串命名变量查找。只是不要指望编译器能够识别它,因为它不是 C/C++ 语言的一部分。不过,最终产品 - 编译后的可执行文件 - 将支持这个概念。

例如,在 C++ 中,使用 Boost:

std::map<std::string, boost::variant<std::string, int>> _;

_["name"] = "user";
_["index"] = 1938107;

std::cout << _["name"] << _["index"] << std::endl;

输出:

user1938107

如果没有现成的类可以帮助您,您还可以使其与编译器已知的常规变量进行互操作。

关于c++ - 在c++中将字符串变成变量真的不可能吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25072486/

相关文章:

javascript - 我的餐巾纸数学解析器上复杂正则表达式的逻辑

c++ - char s1[ ] = "xyz"和 char *s1 = "xyz"

c - 为什么我不能重用 c = getchar();在 str1 上使用后在 str2 上? (C)

使用可变数量的参数调用 exec?

c++ - 建议网站练习 C/C++ 算法/谜题

c++ - 如何将函数作为参数传递给transform()函数?

c# - 在 C# .NET 中将字符串格式化为固定长度

c++ - 放置在外部 DLL 中的类中 wstring 数据的内存损坏

c++ - 当您必须将它作为 char* 传递时,std::string 是否比 char* 更好?

c++ - 将类型转换为 python