linux的c++内怎么把char*字节流转成string

xs19880126 2012-12-13 11:43:19
新手,不太明白C++这种类型转换,要做linux下面通信的程序,现在定义了
typedef unsigned char uint8;
然后 uint8* buf 内存放字节流形式的数据,
现在要把他转成string 死活不会啊...


uint8* buf 内 我都是按字节位放进去数据的。现在要弄出来... 到string
求各位大神帮忙了。
万谢!
分不多了
...全文
1247 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tenywen 2012-12-13
  • 打赏
  • 举报
回复

#include <string>
#include <iostream>
using namespace std;
int main() {
    char buf[20] = {
        "this ia a test;"
    };
    string Cstring;
    for(uint32_t i = 0; i < 20; i ++)
        Cstring[i] = buf[i];
    cout << Cstring.c_str();
    return 0;
}

#include <string>
#include <iostream>
using namespace std;
int main() {
    char buf[20] = {
        "this ia a test;"
    };
    string Cstring(buf);
    cout << Cstring.c_str();
    return 0;
}
xs19880126 2012-12-13
  • 打赏
  • 举报
回复
to yyg990441: 那我怎么拿出来数据,放在string里面呢
yyg990441 2012-12-13
  • 打赏
  • 举报
回复
string里存的是ascii码,一般的字节流里不一定都是ascii码,所以不能转。
Saingel 2012-12-13
  • 打赏
  • 举报
回复
string(char*,lenth);
yddd2011 2012-12-13
  • 打赏
  • 举报
回复
linux通信的程序转化用字节序转化啊 htonl(), htons(), ntohl() 无需自己定义
图灵狗 2012-12-13
  • 打赏
  • 举报
回复
能转换的先决条件是buf中的数据不能包含0: 1、开辟一个char str[len + 1]的数组; 2、把buf的中数据全部拷贝给str,并str[len]='\0'; 3、把str直接给string类型的构造函数即可。
引用 楼主 xs19880126 的回复:
新手,不太明白C++这种类型转换,要做linux下面通信的程序,现在定义了 typedef unsigned char uint8; 然后 uint8* buf 内存放字节流形式的数据, 现在要把他转成string 死活不会啊... uint8* buf 内 我都是按字节位放进去数据的。现在要弄出来... 到string 求各位大神帮忙了。……
zhuyf87 2012-12-13
  • 打赏
  • 举报
回复
楼主去查查string的构造函数,就可以解决了。

65,184

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧