字符串后面空字符的问题(char*与string的转换)

时间:2023-02-05 11:59:05

字符数组是以‘\0’结尾的,所以在字符数组赋值给字符串时会多出来一个’\0’。


char a[]="mynameis"
string b=a;
cout<<b<<endl;


此时输出结果应为mynameis,然而输出结果为mynameis口(空字符标志打不出来);

所以用字符数组给string赋值时要用assign()


char a[]="mynameis"
string b;
a.assign(y,y+strlen(y)-1) //strlen会计算空字符的。
cout<<b<<endl;

字符串赋值给字符数组用循环解决。


string x;
char y[100];
for(int i=1;i<x.size();i++)
{
y[i]=x[i];
}


字符串的操作

若string a="mynameis"

此时可以对a[0,a.size() ) 内的元素操作。

若定义 string a;

而a无值对a的操作是无意义的。