这段代码有什么问题?

typedef ::jace::proxy::java::lang::String JString;
JString toString(const std::wstring& p)
{

    JString strVal(p.c_str());
    return strVal;
}


它引发异常unhandled exception, jace::VirtualMachineShutdownError,其中我已将p.c_str()传递给JString变量strVal。

最佳答案

得到该异常的原因是wstring :: c_str()返回const wchar_t*,而jace::String类没有接受wchar_t *的构造函数。它最接近的是String( ::jace::JArray< ::jace::proxy::types::JChar > p0 );,它可以等同于char*

解决问题的方法可能是这样的:

JString toString(const std::wstring& p)
{
    std::string s;
    s.assign( p.begin() , p.end() );
    JString strVal( s );
    return strVal;
}


这不是一个有效的解决方案,但是有效。

09-29 22:48