2012-04-18 2 views
1

C++ std::string 개체를 Ruby VALUE 개체로 변환하려면 어떻게해야합니까?C++ std :: string to Ruby VALUE

rb_str_new2(c_string)을 시도했지만 작동하지 않았습니다.

나는 함수를

VALUE foo(){return rb_str_new2(c_string);}; 

이 그 오류 메시지가 있습니다 :

cannot convert ‘std::string {aka std::basic_string<char>}’ to ‘const char*’ for argument ‘1’ to ‘size_t strlen(const char*)’ 
+1

어떻게 작동하지 않았다 :

std::string::c_str() 멤버 함수

하나를 얻을하는 데 사용할 수 있습니다? 당신의 코드는 무엇입니까? –

+3

rb_str_new2 (string_object.c_str()); 일을 쉽게해야합니다. –

+2

C 문자열이 아니라면 왜 변수'c_string'을 호출합니까? oO –

답변

4

당신은 함수에 std::string 전달됩니다,하지만 기대 null로 끝나는 const char *을.

rb_str_new_cstr(string.c_str()); 
+0

이것과'rb_str_new2'의 차이점은 무엇입니까? 'rb_str_new_cstr'에 대한 많은 정보를 찾을 수 없습니다 –

+0

@ NiklasB, [그들은 같은 기능입니다] (https://github.com/ruby/ruby/blob/trunk/README.EXT#L179). 함수가 C 문자열을 매개 변수로 사용한다고 추론 할 수 있으므로'rb_str_new_cstr'을 선호합니다. –

+1

예, 더 자세한 설명이 가능한 별칭 일 수 있다고 생각했습니다. 고마워, 잘 알고, 나중에 이것을 사용합니다 :) –