最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何将字符串整数值从js传递给c ++?

IT培训 admin 10浏览 0评论

如何将字符串/整数值从js传递给c ++?

我在我的nodejs项目中使用Nodejs c ++插件。 JS使用字符串作为参数调用c ++中定义的方法。我无法在c ++中获取字符串。下面是我在c ++中的代码:

NAN_METHOD(DBNode::Test){
  printf("Hello\n");
  printf("%s\n", info[0]->ToString());
  printf("%d\n", info[1]->ToNumber());
}

下面是我的js代码:

const test = require('./build/Release/test.node');
test.test('ssss', 99);

以下是输出:

$ node demo.js 
Hello
?ڄ?C
-272643000

您可以从上面的输出中看到未正确打印字符串和整数值。我的代码有什么问题吗?

回答如下:

让我们从数字开始。 ToNumber返回Local<Number>类型的值。它与普通的C-like值不同,printf可以消化。首先,你需要打开Local。它是v8指针式实用程序类。你可以用覆盖的*算子来做到这一点。所以*(info[1]->ToNumber())给了我们vazxswpoi的v8 Number孩子。但这不是故事的结局。现在我们可以从它Value拉出古老的int。或者你可以使用事实(*(info[1]->ToNumber())).Int32Value()祖先覆盖Handle运算符,并写如->

字符串案例更难。 V8使用utf8字符串,您可以使用info[1]->ToNumber()->Int32Value()实用程序类从中获取String::Utf8Value的缓冲区。 char

通常你不需要它在v8插件中,我建议你在你的本机代码中使用v8对象(如Local,String,Number等)。

如何将字符串/整数值从js传递给c ++?

我在我的nodejs项目中使用Nodejs c ++插件。 JS使用字符串作为参数调用c ++中定义的方法。我无法在c ++中获取字符串。下面是我在c ++中的代码:

NAN_METHOD(DBNode::Test){
  printf("Hello\n");
  printf("%s\n", info[0]->ToString());
  printf("%d\n", info[1]->ToNumber());
}

下面是我的js代码:

const test = require('./build/Release/test.node');
test.test('ssss', 99);

以下是输出:

$ node demo.js 
Hello
?ڄ?C
-272643000

您可以从上面的输出中看到未正确打印字符串和整数值。我的代码有什么问题吗?

回答如下:

让我们从数字开始。 ToNumber返回Local<Number>类型的值。它与普通的C-like值不同,printf可以消化。首先,你需要打开Local。它是v8指针式实用程序类。你可以用覆盖的*算子来做到这一点。所以*(info[1]->ToNumber())给了我们vazxswpoi的v8 Number孩子。但这不是故事的结局。现在我们可以从它Value拉出古老的int。或者你可以使用事实(*(info[1]->ToNumber())).Int32Value()祖先覆盖Handle运算符,并写如->

字符串案例更难。 V8使用utf8字符串,您可以使用info[1]->ToNumber()->Int32Value()实用程序类从中获取String::Utf8Value的缓冲区。 char

通常你不需要它在v8插件中,我建议你在你的本机代码中使用v8对象(如Local,String,Number等)。

发布评论

评论列表 (0)

  1. 暂无评论