生成变量名称
Generating Variables' Names
本文关键字:变量名 更新时间:2023-10-16
我想生成一些用于命令的变量。查看下面的代码:
for (char ch='a'; ch<='z'; ch++)
int ch=0;
它只是一个示例,在上面运行代码后,我想拥有int a,int b,int c ...
另一个示例:
for (int i=0; i<10; i++)
int NewiEnd=0;
例如,在以上代码运行代码后,我们将拥有int new1end,int new2end等。
希望我很清楚,我该如何在C ??
否,不可能,不准确。但是,这是可能的:
std::map<char,int> vars;
for (char ch='a'; ch<='z'; ch++)
vars[ch] = 0;
std::cout << vars['a'] << vars['b'] << vars['c'];
您也可以拥有std::map<std::string, int>
。
std::map<std::string,int> vars;
for (int i=0; i<10; i++)
vars["New" + std::to_string(i) + "End"] = 0;
std::cout << vars["New5End"];
在C或C 中您不可能做的事情。
您似乎想要的是类型的地图:
std::map<std::string, int> ints;
这将使您按名称称为"变量":
ints["a"] = 0;
ints["myVariable"] = 10;
或示例中给出的:
std::map<char, int> ints;
for (char ch='a'; ch<='z'; ch++)
ints[ch] = 0;
如果您只是要使用'a' - 'z',则可以使用一个ints数组:
int ints['z' + 1];
ints['a'] = 0;
ints['z'] = 0;
但这为" A"下方的ASCII字符分配了不必要的空间。
在c/c 中,变量名称已经"消失"到代码已编译并运行时。您无法通过"反射"在运行时打印出现有变量的名称...更不用说新命名变量了。寻找此功能的人发现,您可以做到的唯一通用方式落在了使用预处理器上:
在C 中打印变量名称的通用方法
在理论上,预处理程序也可以应用于您的问题,并具有某些约束:
在C预处理器中编写一段时间循环
但是,任何阅读您的代码的人都可能会在您的心中驱动股份,并有理由这样做。周日的懒惰和强烈的相信,这不是您(应该)想要的,这会使我不尝试写一个工作的例子。:-)
(对于好奇的是,预处理器并不完整,尽管有一些"有趣"的实验)
c/c 的性质是让您在需要的基础上建立命名表。默认情况下提供此功能的语言使您为名称的运行时跟踪付费,无论您是否使用反射结束,这都不是本特定的编译语言的精神。其他人给您的答案更正确。
相关文章:
- 你能重载对象变量名本身返回的内容吗
- 在C/C++中将变量名定义为__00000001有什么好处吗
- C++变量名(可以将 main 声明为变量,但对于其他函数名称则不然)
- C++ - 声明中变量名后面的括号
- 如何使替换 c 函数的变量名成为错误?
- 是否可以创建没有变量名的变量
- fstream库,试图创建一个变量名为(c++)的文件
- 一个数组C++中的消息和变量名
- 在变量名后声明带有 () 的非内部类型与不使用变量名的行为不同。即 std::map<int,char>x(); - 这是怎么回事?
- 数组的变量名和该数组的地址有什么区别?
- 如何将变量名设置为字符串?C++
- 类中具有相同变量名的多重继承
- 如何在从.txt文件中读取时不重复相同的变量名
- 在循环中使用相同的变量名可以吗
- C++保留符号作为C变量名
- 在C++中,在给定的相同作用域内声明相同的变量名
- 为什么类名与"::"一起使用在变量名之前?
- 在同级之间继承相同的变量名
- __COUNTER__变量名中
- 按变量名遍历结构