string与char ,char * ,char [] 之间的赋值
前言
一、string 对象与 char [] 间的赋值
二、string 对象与 char 间的赋值
三、string 对象与 char * 间的赋值
一、string 对象 与 char [] 间的赋值
1.用字符数组对string 对象赋值:
char c[10]="asdfgh";
string s;
s=c;
cout<<s<<endl; //输出asdfgh
2.用string 对象对字符数组赋值:
string s="asdfgh";
char c[10];
strcpy(c,s.c_str());//复制s的内容到c中
cout<<c<<endl; //输出asdfgh
在这种情况下,要调用c_str成员函数,将s的内容复制到c中
二、string 对象 与 char 间的赋值
1.用 字符 对string 对象赋值:
char c='w';
string s;
s=c;
cout<<s<<endl;
注意:不能像下面一样写
char c='w';
string s=c;
cout<<s<<endl;
原因:string s=c;这条语句是初始化语句,而不是赋值语句; 而初始化语句不能用字符对string对象初始化,要用字符串。
下面介绍string对象初始化的几种方式
//**初始化的几种方式**//
string s1("Hello");
cout <<"s1= "<< s1 << endl;
string s2(5, 'A'); //5个连续的A
cout << "s2= "<<s2 << endl;
string s3 = "World";
cout << "s3= " << s3<<endl;
string s4;
s4 = 'A'; //赋值语句
//string s4='A'; //该语句是错误的
cout << "s4= " << s4 << endl;
string s5(s1); //用一个对象初始化同类的对象
cout << "s5= " << s5 << endl;
2.用 string 对象 对 char 类型 赋值:
string s="asdfgh";
char c;
c=s[3];
cout<<c<<endl; //输出f;
不能写c=s,因为该string对象的内容是字符串,而char类型是字符类型。
三、string 对象 与 char *间的赋值
1.用 char *对 string 对象 赋值:
char *p="asdfgh";
string s;
s=p;
cout<<s<<endl; //输出asdfgh
注释:指针p指向字符串的首地址,而s=p则是将字符串 的首地址给了string 对象s,这个与上面的用char[]对 string 对象赋值类似。
2.用 string 对象对 char * 赋值:
string s="asdfgh";
char *p=new char[s.size()];//动态分配一个数组,并将该数组的首地址给指针p
strcpy(p,s.c_str());
cout<<p<<endl; //输出asdfgh
总结
以上就是个人的总结了,有不正确的地方欢迎指正。