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)`;
答案 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);