如果你的意圖是通過運行時字符串引用一個變量,你不能這樣做。 (例如在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