HarmonyOS 鸿蒙Next NAPI的JS层string转换c++层string出现截断
HarmonyOS 鸿蒙Next NAPI的JS层string转换c++层string出现截断 传入string:"{“test1”:“uuid-test”, “test2”:“12”, “test3”:“aasssd”}" 通过JS层传入的string,使用下面两种方法,一种无问题,一种会截断
方法1:拿取长度再new char[]。会出现字符串截断
方法2:使用char[]数组,则不会截断
2 回复
先使用napi_get_value_string_utf8获取一下strSize,然后再用napi_get_value_string_utf8获取string
size_t strSize = 0;
std::string buf;
// 获取字符串的长度strSize
if(napi_get_value_string_utf8(env, args[0], nullptr, 0, &strSize) == napi_ok){
// size +1 保存结尾的\n
buf.resize(strSize + 1);
napi_get_value_string_utf8(env, args[0], &buf[0], strSize + 1, &strSize);
OH_LOG_DEBUG(LOG_APP, "key:%{public}s", (char *)buf.c_str());
}
更多关于HarmonyOS 鸿蒙Next NAPI的JS层string转换c++层string出现截断的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html