您的位置:首页 > 其它

std::string和cha*的转换

2015-10-23 19:38 344 查看
个人觉得这个是c++的唯一难点,记一下吧,每次都不记得

第二个难点是无法引用的外部符号,尼玛,又碰到,不想活了

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成新的大小。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: