c – 如何将std :: string转换为v8的本地

我有一个函数,它是一个字符串,然后传递给我的c函数add_node()
Handle<Value> Graph::add_node(const v8::Arguments& args)
{
  HandleScope scope;

  Graph* graph = ObjectWrap::Unwrap<Graph>(args.This());
  graph->add_node( args[0]->ToString() );

  std::cout << "In add node \n";
}

但是我有麻烦,因为我的所有参数都是v8的某些或另一个,我不知道如何在两者之间切换. documentation也不清楚.

编译器给我这个错误

../graph/binding.cc:52:10: error: no matching member function for call to
      'add_node'
  graph->add_node( args[0]->ToString() );
  ~~~~~~~^~~~~~~~
../graph/directed_graph.h:27:7: note: candidate function not viable: no kNown
      conversion from 'Local<v8::String>' to 'std::string &' (aka
      'basic_string<char> &') for 1st argument;
        void add_node( std::string & currency );

如何在本地< v8 :: String>之间切换和std :: string&

解决方法

这似乎很好
v8::String::Utf8Value param1(args[0]->ToString());
std::string from = std::string(*param1);

如果你只是想将一个std :: string转换成一个v8 :: String,那就行了

std::string something("hello world"); 
Handle<Value> something_else = String::New( something.c_str() );

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...