当我尝试将包含西里尔字母的文本System :: String转换为std :: string时,我遇到了类似“Êàêîé-òîòåêñò”的东西。
我已经在另一个项目中测试了相同的代码,并且使用了相同的函数来转换字符串,但是在我的项目中,该代码不起作用,但是在其他项目中却可以。
转换字符串的代码:
std::string Helper::toString(System::String^ value) {
return (const char*)(Marshal::StringToHGlobalAnsi(value)).ToPointer();
}
我刚刚使用了这段代码来转换字符串: 助手:: toString(tbName-> Text);
但是请注意,tbName-> Text包含正确的字符串,我已经在调试模式下进行了检查,但是在转换之后,我只得到了这个“Êàêîé-òîòòêñò”。
我已经尝试过了:
#include <msclr\marshal_cppstd.h>
System::String^ managed = "текст";
std::string unmanaged = msclr::interop::marshal_as<std::string>(managed);
在更改之后,我得到了类似“ ??? ????”的信息。 我不知道出了什么问题,我也使用完全相同的代码来转换其他项目中的字符串,但仅在该项目中,它不起作用。