从'std :: wstring {aka std :: basic_string <wchar_t>}'转换为非标量类型'UString {aka std :: basic_string <char>}'

时间:2016-04-05 16:15:18

标签: c++ c++11 stl

您能否告诉我这段代码有什么不对,以及有关如何解决的任何想法?

JNIEXPORT jstring JNICALL Java_COM_DEMO_TEST_SEND (JNIEnv
*env, jclass c, jstring param){
    const char* strParam = env->GetStringUTFChars(param, 0);
    UString data = s2ws(string(strParam));
    UString result = TEST::SEND(data);
    return env->NewStringUTF(ws2s(result).c_str());
}

我收到了以下错误。

error: conversion from ‘std::wstring {aka std::basic_string<wchar_t>}’ to non-scalar type ‘UString {aka std::basic_string<char>}’ requested
  UString data = s2ws(string(strParam));

1 个答案:

答案 0 :(得分:2)

实际上错误非常好;您尝试使用std::string但是您有std::wstring,并且编译器不知道如何将其转换为另一个。

他们都是std::basic_string的两个专业并不意味着它们可以互换。