unsigned char*和string和unsigned char[]的相互转换

因项目需要,涉及到unsigned char*和string和unsigned char[]的相互转换,记录一下各种方法:

**string转为unsigned char **[]

string str = "ABCDE";
unsigned char ch[16] = {0};

/*注意:当字符串中部存在\0时,以下方法拷贝到字符数组中均会被截断*/
strcpy((char *)ch, str.c_str());
strncpy((char *)ch, str.c_str(), str.length());
memcpy(ch, str.c_str(), str.length());
snprintf((char *)ch, str.c_str(), str.length());

string 转为 unsinged char*

string str = "ABCDEF";
unsigned char* ch_ptr = NULL;
ch_ptr = (unsigned char *)str.c_str();
cout << ch_ptr << endl;

*unsigned char 转为 string

/*注意:当字符数组中存在\0时,字符串会被截断,例如
unsigned char ch[16] = {'A','B','C','\0','D','E','F'};*/
unsigned char ch[16] = "ABCDEF";
string str = "";
//法一:循环拷贝
cout << sizeof(ch) << endl;   //16
cout << strlen((char *)ch) << endl;	 //6
for (int i = 0; i < strlen((char*)ch); i++) {
    str += ch[i];
}
cout << str << endl;

//法二:unsigned char *转为char *再转string
str = (char*)ch;
cout << str << endl;

//法三:unsigned char *转为unsigned char[]再转为string
unsigned char* foo;
unsigned char ch[] = "Hello world";
string str;
foo = ch;
str.append(reinterpret_cast<const char*>(foo));
cout << str << endl;
  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值