Javascript 将Ref{Cwstring}()转换为String
我目前正在为ChakraCore JavaScript引擎编写一个Javascript 将Ref{Cwstring}()转换为String,javascript,julia,chakracore,Javascript,Julia,Chakracore,我目前正在为ChakraCore JavaScript引擎编写一个ccall绑定,有一个函数具有此定义: CHAKRA_API JsStringToPointer( _在ujsvalueref stringValue中, _输出结果缓冲区(*stringLength)常量WCHAR**stringPtr, _超出尺寸*长度 ) 因此,我通过:resultWC=Ref{Cwstring}() 我尝试了一系列转换函数来获取一个字符串,但没有任何效果。我想我需要这个: 但是Base.transcod
ccall
绑定,有一个函数具有此定义:
CHAKRA_API JsStringToPointer(
_在ujsvalueref stringValue中,
_输出结果缓冲区(*stringLength)常量WCHAR**stringPtr,
_超出尺寸*长度
)
因此,我通过:resultWC=Ref{Cwstring}()
我尝试了一系列转换函数来获取一个字符串
,但没有任何效果。我想我需要这个:
但是Base.transcode
需要一个向量/数组,我不知道如何在Julia中为这个案例进行简单的C风格转换
有没有办法把Ref{Cwstring}()
变成String
在修复之前,您可以添加自己的方法:
function Base.unsafe_string(w::Cwstring)
ptr = convert(Ptr{Cwchar_t}, w)
ptr == C_NULL && throw(ArgumentError("cannot convert NULL to string"))
buf = Cwchar_t[]
i = 1
while true
c = unsafe_load(ptr, i)
if c == 0
break
end
push!(buf, c)
i += 1
end
return String(transcode(UInt8, buf))
end
那你可以打个电话过来
unsafe_string(resultWC[])
谢谢,Emojis也可以使用,即使Windows cmd.exe在2018年也无法正确显示其中的大部分:在某种程度上,我们希望捆绑我们自己的终端(),直到那时,您可以尝试