C++,用char*指针操作string类字符串
在c语言中,操作字符串(字符数组)时,经常使用char型指针,对字符数组进行输入与输出等等操作。
而在C++中,更多使用已经封装过的string类来操作字符串,而string类的底层实现也是字符数组char[],那当我们用char型指针对string类字符串进行操作时,string类是怎么样的。
#include<iostream>
using namespace std;
int main(){
string str;
char *p;
p = &str[0];
cout<<"请输入字符串:\n";
cin>>p;
cout<<"string输出:\n"<<str<<endl;
cout<<"--------------------"<<endl;
cout<<"p指针输出:\n"<<p<<endl;
return 0;
}
输出结果是:
通过string类名输出的结果为空,第一步猜测是string未初始化的原因…
#include<iostream>
using namespace std;
int main(){
string str = " ";//5个空格
char *p;
p = &str[0];
cout<<"请输入字符串:\n";
cin>>p;
cout<<"string输出:\n"<<str<<endl;
cout<<"--------------------"<<endl;
cout<<"p指针输出:\n"<<p<<endl;
return 0;
}
运行结果:
当我把string初始为5个空格时,string类名输出的字符也是5个…
而以原来的指针输出,字符串没有变化.
由此可得出一个结论.当通过一个char型指针对一个string对象进行赋值,会将数据存入该string对象中,底层数组也会进行扩容(个人猜测),但是string对象中length()只能通过正常的string函数操作,才能改变,而string类的输出也是通过length()判断输出的长度来进行输出。
版权声明:本文为weixin_44129784原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。