I do this:

// convert a v8::String to a (char*) -- any call to this should later be free'd
static inline char *TO_CHAR(Handle<Value> val) {
    String::Utf8Value utf8(val->ToString());

    int len = utf8.length() + 1;
    char *str = (char *) calloc(sizeof(char), len);
    strncpy(str, *utf8, len);

    return str;
}

Then, anywhere in your code, you can do this:

char *x = TO_CHAR(v8_str);
printf("%s", x);
free(x);

-Ken



On Sun, Jan 29, 2012 at 6:30 PM, Ben Noordhuis <[email protected]> wrote:
> On Mon, Jan 30, 2012 at 00:22, Mark Volkmann <[email protected]> 
> wrote:
>> Is this the best way to get a C string from a Local<Value> that is really a
>> Local<String>?
>>
>> if (value->IsString()) {
>>   String::Utf8Value utfStr(value);
>>   char* s = (char*) *utfStr;
>> }
>
> Depends on what you do with s, it becomes a dangling pointer the
> moment utfStr goes out of scope. Otherwise it's fine.
>
> --
> Job Board: http://jobs.nodejs.org/
> Posting guidelines: 
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> You received this message because you are subscribed to the Google
> Groups "nodejs" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/nodejs?hl=en?hl=en

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to