C++比较变量,变量名

问题描述:

是这样的可能,没有运气的任何地方找到它:C++比较变量,变量名

int numberA = 10; 
int numberB = 20; 
int numberC = 30; 



if (some string == B){ 
    int result = 5 + numberB; 
} 

编辑

+3

这个概念被称为“数组”。 – Jodocus

+4

使用数组.... – StoryTeller

+0

请不要在人们已经回答后大量改变问题的性质。 – Steve

如果你不希望使用std::vectorstd::array或数组,你可以使用std::map文本名称与变量关联:

int numberA = 1; 
int numberB = 2; 
int numberC = 3; 
std::map<std::string, int *> variable_names; 
variable_names["numberA"] = &numberA; 
variable_names["numberB"] = &numberB; 
variable_names["numberC"] = &numberC; 
//... 
int * p_variable = variable_names[some_string]; 
*p_variable = 8; 

通常优选使用std::vectorstd::array并且可能使用std::list作为容器变量或值。

不是直接的,但你可以这样做:

std::vector <int> number (3); 

number[0] = 10; 
number[1] = 20; 
number[2] = 30; 

for (n=0; n<3; n++){ 
int result = 5 + number[n]; //so for n=1, it will be 5 + number1 = 5 + 10... 
} 

请注意,有更简单的方法来初始化矢量,但为了清晰起见,保持结构与问题相同。我还必须稍微更改for循环,因为vector从0开始。

您必须初始化数组才能使其工作。

初始化一个整数数组,你可以这样做:

int num[]= {10, 20, 30}; 
for(int n= 0; n< 3 ; n++) { 
     int result = 5+ num[n]; 
} 

阵列有一个从0开始。 索引你的数组有三个元素,但索引0-2 走这应该工作

+0

'num'将在n = 3时溢出。 – Seeker

+0

我修正了这个错误 – Nora

不可以。就C++而言,变量名在运行时不存在。