目录
一.字符串的存放
1.用字符数组存放字符串
2.用字符串指针管理字符串(最常用的形式,本质还是字符数组)
3.用string类型存放字符串(有个成员是字符指针,这个指针指向一段内存空间存放字符串常量)
二.字符串的输入
1.方法一:用cin整体输入字符串
2.方法二:用cin.getline整体输入字符串,遇到回车和指定字符时,或者是指针指定的字符个数满了以后结束
3.方法三:用getline整体为string输入字符串,碰到回车时结束,getline函数需要有两到三个参数
三.字符串的输出
用串常量初始化
char str2[10]={"student"};
char str3[]={"student"};
char str4[]="student";
首先给数组分配存储空间,末尾有\0,没有内容的地方也用\0填充
const char *string1="stident";
相当于定义了一个指针string1,这个指针指向字符串常量,因为是常量,所以不能随便用*string1对字符串进行写操作
更常用的代码是这样的
char *string2=new char[10];//首先开辟10个字节的存储空间,定义的指针变量string2指向这个空间
strcpy(string2,"student");//对应空间上放置字符串常量所对应的内容
string2指针指向一个动态开辟出来的空间,用函数strcpy给string2指向的空间中放置student(因为用到函数strcpy,开头要#include
string cstr="student";//定义string类型变量,给这个变量赋初值,初值是一个字符串常量
string cstr1;cstr1="student";//这是另一种赋值形式
string实际上是在字符数组的基础上封装出来的一个对字符串进行操作的一个类型,使用的时候要包含头文件#include
char name[20];
cin>>name;//输入字符串,把字符串放到开辟的空间中
这种方式输入的话遇到空格或者回车就结束了,所以不能用于输入时带空格或者回车的字符串
指针形式如下
char *pname=new char[20];
cin>>pname;
用string类型的代码实现如下
string strName;
cin>>strName;
这个方法相较上一个方法可以输入空格了
char name[20];
cin.getline(name,20);
比如说输入一个名字Mary Bob,字符数组中依次存放的字符就是'M' 'a' 'r' 'y' ' ' 'B' 'o' 'b' '\0'
char *pname=new char[20];
cin.getline(pname,20,'-');//意思是输入pname,开辟的内存空间是20,在碰到减号时结束输入
比如说输入Bob-hellow,实际上就只是输入了Bob
但是用string类型定义的一般不用cin.getline
string strName;
getline (cin,strName)//第一个参数是标准输入类型(键盘),第二个参数是要存放的字符串变量
第一个参数是标准输入类型,第二个参数是要存放的字符串变量,第三个参数是结束标识(可有可无)
#要特别注意的是,当cin.getline和cin同时使用时,cin.getline会读入cin最后的结束标识\n,认为\n对cin.getline来说是有效输入,就跳过了其本身的输入。因此就要在cin后面加cin.get()来清除\n的影响
例如
for(int i=0;i<3;i++)
{
cout<>allone[i].id;
cin get();//清除\n的影响
}
for(int i=0;i<3;i++)
{
cout<
比较特殊的是指针类型的
char *pname=new char[20];
cin>>pname;//输入Mray Bob,实际上pname指向的字符空间中只有Mary(空格回车结束输入)
cout<
字符数组名,字符指针都表示字符串
输出字符指针就是输出字符数组名、字符指针标识的地址存放字符,碰到\0输出结束(整个字符串)
输出字符指针的间接引用是输出单个字符
主要注意的是输出的是字符指针还是字符指针的间接引用