如何以这种方式使用变量c ++

时间:2017-01-31 07:24:17

标签: c++ batch-file variables cmd

我正在制作一个c ++程序,其中有多个变量,例如: var1,var2,var3,var4;

我想将它用于for循环,如:

for(int x; x<=5; x++){
if(var1==1){cout << "hi";}
} 

但是我没有输入var1而是想让它变成&#34; x&#34;其中x等于1。 我记得从我的批处理编程日(不完全)我可以使用它:

set x=1
echo var%x%

然后输出将是var1。

3 个答案:

答案 0 :(得分:0)

在许多脚本编程中都可以这样做,但遗憾的是C ++中没有直接的支持。

一些方法是使用数组(如果可能)或指向实际变量的指针数组。

int vars[5] = {...};
for(int x = 0; x < 5; x++){
    if(var[x]==1){cout << "hi";}
}

int var0 = 2, var1 = 42, var2 = 7;
int *const pvars[] = {&var0, &var1, &var2};

for(int x = 0; x < 3; x++) {
    if(*(pvars[x]) == 1)
    {
        cout << "hi";
    }
}

this comment

中提到的
int var0 = 2, var1 = 42, var2 = 7;

for(auto &var = {var0, var1, var2}) {
    if(var == 1)
    {
        cout << "hi";
    }
}

答案 1 :(得分:0)

你可以使用宏来做到这一点,但我真的不认为这是个好主意。为什么不使用数组呢?使用数组,您可以引用所需的索引,因此不是var1var2var3,......而是var[0]var[1],{ {1}},......无论如何,还有更多的C ++。

使用数组时,我甚至建议考虑C ++提供的一个容器类,例如std::vectorstd::array。要在向量中包含一个简单的整数变量数组,只需声明一个例如:var[2],使用std::vector<int> intVec函数提取特定元素,例如at将提取第一个元件。真正使用,几乎任何其他方法,而不是宏。

话虽如此,要在宏中执行此操作,您需要创建一个这样的宏:

intVec.at(0)
然而,

宏是编译时间,因此在循环中使用它们通过将变量传递给它,将无法按预期的方式工作。因此,调用#define var(x) var##x var(1) = 2; // resolves to var1 = 2; 不会将int x = 1; var(x) = 2;设置为2,而是尝试将var1设置为2。

宏解决方案带来了许多缺点,一个是让你的可读性降低,另一个是让你的代码更容易出错,最后,为什么要摆脱&#34; C ++方式&#34;?

答案 2 :(得分:0)

您可以在调用程序可执行文件时使用命令行参数。

ViewPager

这样你的程序将收到5个命令行参数,第一个是程序名本身。

代码看起来像这样:

prog.exe 3 4 1 6

这可能不是您想要做的,但确认您对多变量var1的想法,即argv [1]