C++中,如何将unsigned char 转换为CString字符串? 5

如:unsignedcharuc[3]={0x31,0x32,0x33};怎么样才能把上面的数据转换为字符串"123"?... 如:unsigned char uc[3] = {0x31,0x32,0x33};
怎么样才能把上面的数据转换为字符串"123" ?
展开
 我来答
splashchaos
2014-10-24 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3342
采纳率:0%
帮助的人:3633万
展开全部

这个隐含两个细节:

  1. uc没有'\0'结尾,因此冒然当字符串赋值给string或CString,在正常字符串后面要出乱码(不知道如何结尾)

  2. 这是unsigned 字符数组,和一般的char array =>string不同,需要强制类型转换。


方法很多,如下列举3种:【我用的GCC编译器, 用string演示;VC的CString方法相同】

#include <iostream>
#include <string>
#include <algorithm>
#include <iterator>
#include <sstream>

using namespace std;

int main(int argc, char** argv) {
    unsigned char uc[3] =  {0x31,0x32,0x33};
    char *pch;
    size_t len = sizeof(uc) / sizeof(uc[0]);
    string str1 (reinterpret_cast<const char*>(uc),len); //方法1
    string str2;
    string str3;
    
    //方法2
    pch = new char[len+1];
    memcpy(pch, uc, len);
    pch[len] = '\0';
    str2 = pch;
    delete pch;

    //方法3    
    stringstream ss;
    copy(uc, uc+len, ostream_iterator<char>(ss));         
    string str3 = ss.str();

    //输出
    cout << str1 << endl;
    cout << str2 << endl;
    cout << str3 << endl;
    return 0;
}
匿名用户
2015-09-29
展开全部
std::string str(uc, uc+sizeof(uc)/sizeof(uc[0]))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hi哦哦ok
2015-09-24 · TA获得超过283个赞
知道答主
回答量:172
采纳率:0%
帮助的人:23.2万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式