【问题标题】:How to stringify the value of a variable?如何对变量的值进行字符串化?
【发布时间】: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


【解决方案1】:

将它们一起存储在 std::map 中即可。

#define n(x) #x
int abc=123;
std::map<std::string,std::string> f;
f[n(abc)]=std::to_string(abc);

现在f["abc"] == "123" 这就是我想做的。感谢您之前的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 2018-10-19
    • 2019-08-25
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多