有如下int变量分别被命名为 m_1th, m_2th, m_3th ......m_100th 一共一百个变量都已经被赋不同的值(非数组);
现在要将变量赋值给COleVariant varValueInt。
如何用for 语句实现简单的如for (int i=1;i<=100;i++)
{
     varValueInt.iVal= m_"i"th; // 自动载入对应i值的int变量值
     //do something else
}类型的快速给变量varValueInt赋值?
急!先谢谢各位的帮忙!

解决方案 »

  1.   

    解决方法,不使用int,而是自定义一种类型,然后就可以实现你要的效果如下:
    std::map< std::string, INT >
      

  2.   

    #define m(x) m_##xthfor (int i=1;i<=100;i++)
    {
         varValueInt.iVal= m(x);      //do something else
    }
    给分吧
      

  3.   

    倒给弄错了哈#define m(x) m_##xfor (int i=1;i<=100;i++)
    {
         varValueInt.iVal= m(i);      //do something else
    }
    这样写
      

  4.   

    谢谢楼上的,不过
    #define m(x) m_##xth
    这段的具体意思不是很明白……
      

  5.   

    例如
    m(6) -->  m_6这是#define  的一种用法记住格式就可以了。
    那个
    是不是可以给分了吼吼~~~
      

  6.   

    #define M(i) m_##i 带参数的宏定义;
    在预编译的时候,编译器会自动替换宏,如M(i),编译时自动替换为m_i;
    而for (int i=1;i<=100;i++)i的值只在运行时在栈上生成,编译的时候不可能识别i值。
    所以通过变量i循环使用一个宏是无用的,始终为m_i,还得使用100个宏:
    #define M(i) varValueInt.iVal= m_##i
    M(1);M(2);..........M(100);
    ================================
    不知道什么原因不用数组,如嫌这样写麻烦的话,
    就写个循环for(int i=1;i<=100;i++)cout<<"varValueInt.iVal= m_"<<i<<"th\n";
    把运行结果COPY到你的代码中...
      

  7.   

    用#define是个办法,不过以后尽量还是用数组吧,
      

  8.   

    #define m(x) m_##xfor (int i=1;i<=100;i++)
    {
         varValueInt.iVal= m(i);      //do something else
    }
    这样写是错误的,因为编译时m(i) -> m_i,编译就通不过
      

  9.   

    即然不用数组,将值放入到对应的表中

    名称   数值
    m_1th  1
    m_2th  2
    .......
    CString strValueName;
    for (int i=1;i<=100;i++)
    {
         strValueName = Compose();//自已写函数通过i值组成变量的名称,如i = 1时  strValueName的值为m_1th;
         varValueInt.iVal= FindValue(CString &strValueName); // 通过FindValue(自已写)在表中查找他对应的值并返回     //do something else
    }
      

  10.   

    谢谢sd_jn()、seu07201213(汪洋中的一片叶子)、WindYou(WindYou)、helldream2002()以及其它本贴中一众高手的大力协助,分已散,谢谢你们的关心以及热心。