当我尝试将包含西里尔字母的文本System :: String转换为std :: string时,我得到的只是随机的字符序列

时间:2019-05-14 18:51:06

标签: c++ visual-studio visual-c++

当我尝试将包含西里尔字母的文本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);

在更改之后,我得到了类似“ ??? ????”的信息。 我不知道出了什么问题,我也使用完全相同的代码来转换其他项目中的字符串,但仅在该项目中,它不起作用。

0 个答案:

没有答案