如果你的意图是通过运行时字符串引用一个变量,你不能这样做。 (例如在php你可以用$$variable
做到这一点,在C++没有那种功能)。
最相似的方法是使用预处理打,但我强烈建议你不要去,因为平时那种解决方案都相当“脏”。
最简单和最佳的解决方案是使用数组,然后使用索引访问变量。
一个小例子:
int main(int argc, char *argv[]) {
std::array<double, 3> nrs = {111, 222, 333};
for (int i = 0; i < nrs.size(); ++i) {
std::cout << "Num" << i + 1 << ": " << nrs[i] << '\n';
}
return 0;
}
有一个很多这种方法的变种,例如:你可以使用std::vector
是在编译时没有定义的变量的数目。
我认为这将解决您的问题。
无论如何只是为了完整性,还有另一种方法来“地址”一个名称的变量。原理相同,但不使用数字索引,您可以使用字符串名称。
这可以通过使用map
或hash
来实现。
int main(int argc, char *argv[]) {
std::map<std::string, double> nrs = {std::make_pair("nr1", 111),
std::make_pair("nr2", 222),
std::make_pair("nr3", 333)};
for (int i = 0; i < nrs.size(); ++i) {
std::string num = "nr" + std::to_string(i + 1);
std::cout << num << ": " << nrs.at(num) << '\n';
}
return 0;
}
因此,使用方法at
您可以访问与该名称关联的值。
注意:如果找不到变量名,并且您尝试访问异常将被抛出。
你不能得到通过vairable号访问变量NR1,NR2,NR3。 – pavnik
将数字放在数组中 – NathanOliver
没有办法将字符串转换为标识符 – Raindrop7