C风格字符串和string类里的字符串的区别:
一、string字符串声明时候是没有固定长度,是变长字符串,根据赋值编译器会动态调整长度,一般的c字符串其实就是char类型字符数组,定义时候必须声明长度,如char[max_length]。还有区别是c字符串以‘/0’字符结尾,所以一个长度定义为max_length字符串最多能存储max_length-1个字符。
二、string类是标准库的类,并不是内置类型,标准库就像是我们自己定义的类差不多的。如果需要用string类给C风格字符串赋值的话,后面是需要添加'\0'。
三、处理string类时,要含有头文件#include<string>,而处理C风格字符串时,要含有头文件#include<cstring>,且可以用相应的标准库函数。
四、从表中输入设备中输入:
从标准输入设备读入一个string 类型字符串的程序段:
string str;
cin >> str;
从标准输入设备读入一个C 风格字符串可如下实现:
const int str_size = 80;
char str[str_size];
cin >> str;
或用动态分配数组大小:
const int str_size = 80;
char *str;
str=new char[const int str_size];
cin>>str;
............
delete[]str;
所以C风格字符串的程序需要自己管理内存的分配和释放,而string类型的程序由系统自动进行内存的分配和释放,所以使用C风格字符串的程序要简短,速度快点。
创建动态数组:
1.在动态分配数组时,只需指定类型和数组长度,不必为数组对象命名。
2.new表达式返回指向新分配数组的第一个元素的指针
3.new要与delete配对使用:释放数组时要使用delete[]+数组名。