unsigned char*转string或QString

在使用libevent开发Http服务接收数据的过程中,发现返回的是unsigned char*,默认的编码UTF-8,如果转为正确的内容呢?

 

1. unsigned char*转string

unsigned char* pBuf = evbuffer_pullup(req->input_buffer, -1);
vector<unsigned char> vctBuf(pBuf, pBuf + nPostSize);
string strBuf(vctBuf.begin(), vctBuf.end());

另一种做法是new char* 然后用memcpy的,会频繁申请和释放内存,不推荐。上面的方式用的全是栈内存,简单方便。

因为编码是UTF-8,中文是乱码的,需要转一下。

 

2. unsigned char*转QString

unsigned char* pBuf = evbuffer_pullup(req->input_buffer, -1);
vector<unsigned char> vctBuf(pBuf, pBuf + nPostSize);
string strBuf(vctBuf.begin(), vctBuf.end());
QString strText = QString::fromUtf8(strBuf.c_str());

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页