C++ 如何在C++;?

C++ 如何在C++;?,c++,C++,我想让num显示nr1、nr2和nr3的值。有什么想法吗?谢谢 #include <iostream> #include "../std_lib_facilities.h" using namespace std; int main() { int count=3; string num; double nr1=111; double nr2=222; double nr3=333; for(int i=1;i<=count

我想让num显示nr1、nr2和nr3的值。有什么想法吗?谢谢

#include <iostream>
#include "../std_lib_facilities.h"

using namespace std;

int main() {
    int count=3;
    string num;
    double nr1=111;
    double nr2=222;
    double nr3=333;

    for(int i=1;i<=count;i++) {
        ostringstream number {};
        number << "nr" << i;
        num=number.str();
        cout << "Num: " << num << endl;
    }
}
#包括
#包括“./std\u lib\u facilities.h”
使用名称空间std;
int main(){
整数计数=3;
字符串数;
双nr1=111;
双nr2=222;
双nr3=333;

对于(int i=1;i)如果您打算通过运行时字符串引用变量,则不能这样做(例如在PHP中,可以用<代码> $$变量< /> >,在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::map
如下所示:

int main()
{
    std::map<std::string, double> nums;

    nums["nr1"] = 111;
    nums["nr2"] = 222;
    nums["nr3"] = 333;

    for(int i = 1; i <= 3; i++)
    {
        std::ostringstream number;
        number << "nr" << i;
        std::string num = number.str();
        std::cout << "Num: " << nums[num] << '\n';
    }
}
intmain()
{
std::map nums;
nums[“nr1”]=111;
nums[“nr2”]=222;
nums[“nr3”]=333;

对于(int i=1;i),您无法通过VARABLE number访问变量nr1、nr2、nr3。将数字放在数组中无法将字符串转换为标识符每当您发现自己创建具有数字名称的变量时,它可能应该是一个数组。@Biagio Festa:thx,就是这样!Galik的代码也起作用。
int main()
{
    std::map<std::string, double> nums;

    nums["nr1"] = 111;
    nums["nr2"] = 222;
    nums["nr3"] = 333;

    for(int i = 1; i <= 3; i++)
    {
        std::ostringstream number;
        number << "nr" << i;
        std::string num = number.str();
        std::cout << "Num: " << nums[num] << '\n';
    }
}