白泽丶墨 发表于 2020-7-21 13:48:46

疑问,求助大佬

一般用string存汉字没有问题,
但为什么用string将汉字存入vector中最后会变成乱码呢?
萌新求带!!!!

xiaosi4081 发表于 2020-7-21 13:53:22

本帖最后由 xiaosi4081 于 2020-7-21 13:54 编辑

先把它转成utf-8编码试试:
std::string string_To_UTF8(const std::string & str)
{
        int nwLen = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0);

        wchar_t * pwBuf = new wchar_t;//一定要加1,不然会出现尾巴
        ZeroMemory(pwBuf, nwLen * 2 + 2);

        ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.length(), pwBuf, nwLen);

        int nLen = ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, -1, NULL, NULL, NULL, NULL);

        char * pBuf = new char;
        ZeroMemory(pBuf, nLen + 1);

        ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL);

        std::string retStr(pBuf);

        delete[]pwBuf;
        delete[]pBuf;

        pwBuf = NULL;
        pBuf = NULL;

        return retStr;
}

永恒的蓝色梦想 发表于 2020-7-21 14:08:48

用 wstring。
页: [1]
查看完整版本: 疑问,求助大佬