Native中 napi\_get\_cb\_info传递的字符串类型参数,只能通过napi\_get\_value\_string\_utf8获取定长的部分吗?

napi\_get\_cb\_info传递的字符串类型参数,通过napi\_get\_value\_string\_utf8必须传char* buf,size\_t bufsize 这样如果传递是非定长的json,则不知道buf改设置多少,这里该如何处理?

阅读 86
1 个回答

解决方案

static napi_value Add(napi_env env, napi_callback_info info) {
  size_t requireArgc = 1;
  size_t argc = 1;
  napi_value args[1] = {nullptr};
  size_t size;

  napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
  napi_get_value_string_utf8(env, args[0], nullptr, 0, &size);

  size_t str_size = size+1;
  char *buf = new char [str_size];
  memset(buf, 0, str_size);
  napi_get_value_string_utf8(env, args[0], buf, str_size, nullptr);
  OH_LOG_INFO(LOG_APP, “%{public}s”, buf);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进