C++中char*与string转换

(1)char*转换为string:直接赋值即可

    char a[1024]="abcdefg";
    string mm=a;

(2)求char*(不包含\0)以及string的长度:strlen()函数

cout<<"a.size:"<<strlen(a)<<endl;

(3) string转化为char*
参考文献

注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针

比如:最好不要这样:
char* c;
string s=“1234”;
c = s.c_str(); //c最后指向的内容是垃圾,因为s对象被析构,其内容被处理

应该这样用:
string s=“12345”;//本质是"12345\0"
char c[6];//注意:这里如果是用c[5]的话,会出现内存问题,最少是string.size()+1,
strcpy(c,s.c_str());

注意:strcpy现在可能会用不了,比如visual studio 2015,可以用strcpy_s
完整代码

int main()
{
    char a[1024]="abcdefg";
    string mm=a;
    cout<<"a.size: "<<strlen(a)<<endl;

    char b[1024];
    strcpy(b,mm.c_str());

    printf("b is %s\n",b);
    cout<<"b.size: "<<strlen(b)<<endl;
}

执行结果

a.size: 7
b is abcdefg
b.size: 7

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值