【发布时间】:2020-07-10 05:42:28
【问题描述】:
假设我们有int abc=123;
我想将变量名和值都字符串化。但是使用像#define n(x) #x 这样的宏只会对变量名本身进行字符串化。如何将值与变量名称一起串起来并有效地一起访问它们?
【问题讨论】:
-
x有什么类型?没有单一的方法可以对对象进行字符串化。 -
您必须编写 C++ 代码才能做到这一点。 C++ 不会为你做这件事。 C++ 唯一知道如何格式化的是字符串和数值。对于其他任何事情,您都必须编写执行此操作的代码。
-
@HolyBlackCat
x是一个字符串。但我想定义一个以x的值作为变量名的新变量。假设string x="abc";不直接定义string abc如何定义它? -
这是不可能的。在预处理器运行后的编译过程中,变量的名称是完全固定的。在运行时,根本没有变量名称的概念,根本无法在运行时更改现有变量的名称或创建新的命名变量。这在具有
eval等结构的语言中往往是可能的,但在 C++ 中则不然。这将有助于了解您要解决的问题。也许std::map会很有用,例如使用std::map<std::string, std::string>。 -
这听起来像XY problem。你真正想达到什么目标?
标签: c++ string stdmap stdstring std-pair