如何将 std::string 转换为 v8 的本地<string>
How to convert std::string to v8's Local<string>
我有一个函数,它可以接受一个字符串,然后传递给我的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神庙的某种或另一种,我不知道如何在两者之间切换。文档中也没有明确说明。
编译器给了我这个错误
../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 );
如何在Local<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() );
这个盒子上没有v8框架,但是这个
v8::AsciiValue av(args[0]->ToString());
std::basic_string<char> str(av);
graph->add_node(str);
应该工作,给定graph->add_node复制str。
这适用于2020年3月(NodeJS v12.16.1):
using v8::Local;
using v8::String;
using v8::NewStringType;
std::string encoded_val = **some_value**;
Local<String> returned_str = String::NewFromUtf8(isolate, encoded_val.c_str(),
NewStringType::kNormal).ToLocalChecked();
相关文章:
- cppcheck在const std::string[]上引发警告
- 将std::string传递给WriteConsole API
- 为std::string的某个索引赋值
- std中有类似find_last_of的函数,而string中没有
- EASTL矢量<向量<int>>连续的
- 使用 std::string () const 函数启动线程或未来
- 使用char类型将decimal转换为string,将string转换为decimal
- 迭代和比较映射<字符串、矢量<string>> c++ 中的值
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 将向量解析<string>为字符串
- 'string.assign(string.data(), 5)' 是明确定义的还是 UB?
- 如何更改大小(std::string)
- "string.h"在构建适用于iOS的qt应用程序中找不到消息
- C++:如何将 unix 时间的字符串转换为 *tm?(使用时间错误:"cannot convert 'String' to 'tm*' ")
- std::string 的对象真的可以移动吗?
- 与'operator='不匹配(操作数类型'String'且"void")
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- 无法从 std::string 中提取C++ Unicode 符号
- std::string 构造函数如何处理固定大小的 char[]?
- <string> 使用 for 循环写入向量