Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从‘;std::wstring{aka std::basic_string<;wchar\u t>;}’;到非标量类型‘;UString{aka std::basic_string<;char>;}’;_C++_C++11_Stl - Fatal编程技术网

C++ 从‘;std::wstring{aka std::basic_string<;wchar\u t>;}’;到非标量类型‘;UString{aka std::basic_string<;char>;}’;

C++ 从‘;std::wstring{aka std::basic_string<;wchar\u t>;}’;到非标量类型‘;UString{aka std::basic_string<;char>;}’;,c++,c++11,stl,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:

你能告诉我这个代码出了什么问题,以及如何修复的想法吗

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));
错误:请求从'std::wstring{aka std::basic_string}'转换为非标量类型'UString{aka std::basic_string}'
UString data=s2ws(字符串(strParam));

事实上,这个错误相当不错;您试图使用
std::string
,但是您有一个
std::wstring
,编译器不知道如何将一个转换为另一个


事实上,它们都是std::basic_string的专门化,并不意味着它们是可互换的。

事实上,错误是相当好的;您试图使用
std::string
,但是您有一个
std::wstring
,编译器不知道如何将一个转换为另一个


它们都是
std::basic_string
的专业化并不意味着它们是可互换的#else typedef std::字符串UString#endif则编译代码时没有设置WIN32,检查您的项目设置。我在Linux上编译它,像这样
g++-Wall-g-c-i/usr/lib/jvm/java-8-oracle/include-i/usr/lib/jvm/java-8-oracle/include/Linux BridgePosAPI.cpp-o BridgePosAPI.o-std=c++11
如果它在Linux中,应该使用什么?您是为windows目标交叉编译的吗?否则,我将省略windows特定的内容#else typedef std::字符串UString#endif则编译代码时没有设置WIN32,检查您的项目设置。我在Linux上编译它,像这样
g++-Wall-g-c-i/usr/lib/jvm/java-8-oracle/include-i/usr/lib/jvm/java-8-oracle/include/Linux BridgePosAPI.cpp-o BridgePosAPI.o-std=c++11
如果它在Linux中,应该使用什么?您是为windows目标交叉编译的吗?否则我会忽略windows特定的内容。