我有以有序方式命名的变量,i1,i2,i3,...我试图使用变量名称的数字部分在运行时访问这些变量。
以下是我尝试用于解决此问题的代码。它无法正常工作。
#include <iostream>
using namespace std;
#define CreateVariable(c,v) c##v
int main()
{
int i1(11), i2(22), i3(33), i4(44), i5(55);
cout << CreateVariable(i, 3) << endl; // This is working and prints "33"
int k;
cin >> k; // suppose user input '5'
if (k > 0 && k < 6)
cout << CreateVariable(i, k) << endl; // This is not working
return 0;
}
是否有可能在C ++中实现这一目标?
答案 0 :(得分:7)
不,这是不可能的。但是,您可以将这些变量/值放入数组(或映射)并通过索引访问它们。
答案 1 :(得分:0)
预处理器在编译器之前完成它的工作。 因此#define可以在编译之前用作宏。 但是,无法在C ++中以这种方式在运行时进行评估。
您可以使用STL容器,例如 std :: vector 或 std :: array
例如:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
std::vector<int> vec {11,22,33,44,55,66};
int k;
cin >> k; // suppose user input '5'
if (k > 0 && k < 6)
cout << vec[k] << endl;
return 0;
}