string = 与strcpy的区别 c_str()

Posted bcy1998

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了string = 与strcpy的区别 c_str()相关的知识,希望对你有一定的参考价值。

在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。 

1.c_str是一个内容为字符串指向字符数组的临时指针; 
2.c_str返回的是一个可读不可改的常指针;

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

    char  s1[20]="12345";//要用char 而不能用string
    string s2="54321";
    string s=s1+s2;
    strcpy(s1,s2.c_str());
    cout<<s1<<endl;
    strcat(s1,"a");
    cout<<s1<<endl;
    cout<<s2.c_str()<<endl;
    return 0;

直接赋值是将两个char*指向的位置变成一样的,两个char*实际将表示一个字符串
而拷贝的结果是两个char*指向两个同样的字符串

字符串拷贝用strcpy,字符用=就可以了,因为=拷贝字符串时候只会拷贝首地址(第一个字符),而strcpy是把字符串里每个字符一个一个拷贝过去



以上是关于string = 与strcpy的区别 c_str()的主要内容,如果未能解决你的问题,请参考以下文章

memcpy在C语言中的含义,与strcpy区别

strcpy & memcpy区别

c 语言 strcpy

strcpy和strncpy用法和区别

strcpy&memcpy理解

字符串的拷贝有哪些方式,以及memcpy和strcpy的区别