使用string类定义字符串(82-88p)

      本人非专业人员自学笔记,如有不对,请在评论区批评指正!!!欢迎大家与我讨论。

使用char类型数组可以定义字符串,但太过于繁琐,操作不方便,因此c++引用string类库(加入头文件#include),可以将string看作一个数据类型,如int double等,直接定义一个字符串,定义赋值与其他类型数据一样,但是需要加双引号。其中仅定义未赋值的字符串内存为零,不占据空间,等后期输入字符串则会开辟相应空间,若两次赋值不同长度字符串,开辟的空间也会随之变化。

string str1;
string str2="basic";

数组不能相互直接整体赋值,因为数组名代表首元素的地址,但是用string类定义的字符串变量可以整体赋值。

char str1[];
char str2[] ="basic";
str1 = str2; //错误,不能赋值。

string str3;
string str4 ="basic";
str3 = str4; //正确,可以整体赋值。

查询所定义的字符串长度,可以使用如下方法(使用sizeof()也可以,但需要转换数据类型):

string str = "basic";
int len;
len = str.length();
//或者
len = str.size();

可以实现字符串之间的操作,复制,拼接.如果使用字符数组,则需要使用两个库函数去实现复制拼接,如下(刚开始学习使用两个库函数时传入的是两个string数据,不停报错,也不知道哪错了,现在终于明白了!!!):

string s1;
string s2 = "basic";

char str1[20];
char str2[]="c++";

//若使用string进行复制,拼接:
s1 = s2;//复制
s1 = s1 + s2;
//或者 s1 += s2;字符串拼接

//如果使用字符数组
strcpy(str1,str2)//把str2复制给str1
strcat(str1,str2)//把str2追加在str1的后面,或者这样:strcat(str1."abc"),把abc追加在str1的后面


(在vs中使用两个库函数时,会报错,表示不安全。不提倡关闭安全检测!在属性中,配置属性,c++,预处理定义中增加一条_CRT_SECURE_NO_WARNINGS;即可)使用string类定义字符串(82-88p)_第1张图片

输入读取到string对象中的代码:

getline(cin,str)

此时,getline不是类方法,将cin作为参数,指出到哪里去寻找输入。

你可能感兴趣的:(C++,Primer,Plus笔记,c++)