读取数组元素并转换为字符串

时间:2014-12-09 14:33:23

标签: ruby ruby-c-extension

if (RARRAY_LEN(arr) > 0) 
   {
     VALUE str = rb_ary_entry(arr, 0);
     abc = some_method(*str);
   }

rb_ary_entry(arr, 0)给了我一个索引值。然后我想将该值转换为字符串,以便我可以将它传递给下一个方法。我试过了:

rb_str_new2(rb_ary_entry(arr, 0));

但我收到错误说:

error: indirection requires pointer operand `('VALUE' (aka 'unsigned long')` `invalid`)`
`ipDict = some_method(*str)`;

1 个答案:

答案 0 :(得分:0)

使用StringValueCStr macro将Ruby字符串转换为char*rb_str_new函数用于转换为另一个方向。)

VALUE str = rb_ary_entry(arr, 0); // str is now a Ruby String
char *c_str = StringValueCStr(str);

abc = some_method(c_str);