chrome newer version(14)不会将空终止字符串作为NPVariant的一部分,而firefox的行为则不同,并提供以null结尾的字符串。这是预期的吗?
除了提取字符串,分配内存和添加空字符然后释放相同的字符外,我们还能做些什么.....这一切只是为了添加一个空字符?
答案 0 :(得分:2)
从未要求NPVariant NPStrings包含NULL终止字符串。无论如何他们有时会这样做然而,它们所包含的是一个“长度”来表示该字符串的长度;我通常只是将它转换为std :: string,如下所示:
retVal = std::string(npVar->value.stringValue.UTF8Characters, npVar->value.stringValue.UTF8Length);
FireBreath就是这样做的; https://github.com/firebreath/FireBreath/blob/master/src/NpapiCore/NpapiBrowserHost.cpp#L253