解决办法:
1.打开cmd,输入chcp发现字符编码是936,是GBK编码
2.而VM是采用UTF-8编码,也就是说,字符编码不匹配,需要转换编码,下面提供了两个UTF-8和GBK编码互转的函数:
std::string GBKToUTF8(const char* gbkStr) {
int gbkLen = strlen(gbkStr);
int utf8Len = gbkLen * 3; // UTF-8最多需要3个字节来表示一个字符
wchar_t* wstr = new wchar_t[utf8Len + 1];
memset(wstr, 0, sizeof(wchar_t) * (utf8Len + 1));
// 将GBK编码的字符串转换为宽字符(通常是UTF-16)
MultiByteToWideChar(CP_ACP, 0, gbkStr, -1, wstr, utf8Len);
char* utf8Str = new char[utf8Len + 1];
memset(utf8Str, 0, utf8Len + 1);
// 将宽字符转换为UTF-8编码的字符串
WideCharToMultiByte(CP_UTF8, 0, wstr, -1, utf8Str, utf8Len, NULL, NULL);
delete[] wstr;
std::string utf8String(utf8Str);
delete[] utf8Str;
return utf8String;
}
std::string UTF8ToGBK(const std::string& utf8Str) {
int utf8Len = utf8Str.length();
int gbkLen = MultiByteToWideChar(CP_UTF8, 0, utf8Str.c_str(), utf8Len, NULL, 0);
wchar_t* wstr = new wchar_t[gbkLen];
MultiByteToWideChar(CP_UTF8, 0, utf8Str.c_str(), utf8Len, wstr, gbkLen);
int gbkOutputSize = WideCharToMultiByte(CP_ACP, 0, wstr, gbkLen, NULL, 0, NULL, NULL);
char* gbkStr = new char[gbkOutputSize];
WideCharToMultiByte(CP_ACP, 0, wstr, gbkLen, gbkStr, gbkOutputSize, NULL, NULL);
delete[] wstr;
std::string result(gbkStr);
delete[] gbkStr;
return result;
}
3.使用方法:可以拷贝到代码文件AlgorithmModule.cpp中在“获取算法参数”和“设置算法参数”函数中使用:
4.编译完成即可正常显示。最后贴上配置自定义模块运行参数中配置文件选择器的xml配置:
要修改的文件:
模型文件
模型文件
RW
True
false
%.tree|*.tree%