紫罗兰1225516 发表于 2015-8-28 09:01:49

loadrunner 中,将参数为“123,400,400”转换成int型,转换后为:123400400,怎么办呢

       loadrunner中,抓取的参数是“123,400,400”,想要将参数转换成int型的,使得转换后的结果为 :123400400;该怎么做呢?
                                     小女子初学,哪位大神可以指点一二呀?

virgolong 发表于 2015-8-28 10:43:54

网上搜了下这个函数可以直接用,放到globals.h中:
int StrToNum(const char * pstr)
{
    int iresult = 0;
    const char * pstrRun = pstr;
    while (pstrRun != '\0')
    {
      if (pstrRun > 1 && pstrRun <255 && isdigit(pstrRun))
      {
            iresult *= 10;
            iresult += (pstrRun - '0');

      }
      ++pstrRun;
    }

    return iresult;
}


然后在action中直接调用;
lr_save_int(StrToNum(lr_eval_string("{aa}")),"my_num");       


测试通过,打印出来的日志:
Action.c(5): Notify: Parameter Substitution: parameter "aa" ="123,400,400"
Action.c(5): Notify: Saving Parameter "my_num = 123400400".

清凉晨 发表于 2015-8-28 09:32:31

如果参数是3个数的话还是分开用int吧,别一个int后跟那么多数

virgolong 发表于 2015-8-28 10:00:13

char rec_tmp;   //定义一个变量,用于存三个参数
sprintf(rec_tmp,"%s%s%s",lr_eval_string("{str1}"),lr_eval_string("{str2}"),lr_eval_string("{str3}"));   //把三个参数放到变量rec_tem中
lr_save_int(atoi(rec_tmp),"my_num");        //把变量的值转换int型放到变量my_num中

virgolong 发表于 2015-8-28 10:03:23

呃,我错了,你抓出来直接是“123,400,400”,还以为是三个参数

紫罗兰1225516 发表于 2015-8-28 10:10:33

清凉晨 发表于 2015-8-28 09:32
如果参数是3个数的话还是分开用int吧,别一个int后跟那么多数

取出来的参数是一个数的,只不过这个数每三位之间用“,”隔开,所以如果直接使用atoi()函数转型的话,最终转换后的数是“,”隔开的第一段,即:123;现在想要的是,将这个数“123,400,400”转换后的最终结果是:123400400

紫罗兰1225516 发表于 2015-8-28 15:34:11

virgolong 发表于 2015-8-28 10:43
网上搜了下这个函数可以直接用,放到globals.h中:
int StrToNum(const char * pstr)
{


谢谢哈,我试过这个这个方法,的确可用(虽然我不懂这里面的代码是什么意思:P)

virgolong 发表于 2015-8-28 15:46:44

紫罗兰1225516 发表于 2015-8-28 15:34
谢谢哈,我试过这个这个方法,的确可用(虽然我不懂这里面的代码是什么意思)

原理就是,把参数中从左到右每一位取出来,如果是数字,则每次×10后和下一次取的值相加
例如123,0=((1*10+2)*10+3)*10+0=1230
页: [1]
查看完整版本: loadrunner 中,将参数为“123,400,400”转换成int型,转换后为:123400400,怎么办呢