前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何把std::string当char *使用?

如何把std::string当char *使用?

作者头像
王亚昌
发布2018-08-03 15:44:55
5950
发布2018-08-03 15:44:55
举报
文章被收录于专栏:王亚昌的专栏

std::string使用很方便,但有时会碰到这样的问题,比如我们有一个结构体,内容如下所示:

typedef struct _datainfo

{

    int i;

    unsigned time;

} DATAINFO;

DATAINFO stInfo;

stInfo.i = 10;

stInfo.time = time(NULL);

如果要把这个结构体的内容保存到一个string,通常的作法是什么呢?

char buf[512];

string strData;

memcpy(char*(buf), (char *)&stInfo, sizeof(stInfo));

strData = string((char *)buf);

其实我们忽略了一点,就是string也是用char *来保存数据内容的,而c_str()接口就返回了这个头指针。与普通的字符串不同的是,它的长度并不是以/0结尾去判断的,而是通过成员变量里的size决定的,知道了这一样,我们就可以把string当char *来使用了。

string strData;

strData.resize(sizeof(stInfo));

memcpy((char *)strData.c_str(), (char *)&stInfo, sizeof(stInfo));

这样就可以实现了,知道了这一点,我们就可以用string干更多的事情,要注意的就是在每次内容修改之前,要进行resize成新的大小。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2010年03月06日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档