第五节、字符串
第一节 基础知识
1.每个字符都有对应的整数ASCII码,常用ASCII值,’A''Z'是6590,‘a''z'是97122,’0‘’9'是4857,字符可以参与运算,运算时会将其当作整数。(记住)
计算机里面的所有字符是-128~127的数字两者之间可以相互转换。
整数与ASCII码转换的关系
#include <iostream>
using namespace std;
int main()
{
//强制类型转换
char c = 'a';
cout<< (int)c <<endl;
int a=66;
cout << (char)a <<endl;
return 0;
for(int i=1;i<128;i++) printf("%d: %c\n",i,(char)i);
printf("%c\n",'a'+3);//输出d
printf("%d\n",'b'-'a');//输出差,1
int a='B'-'A';
int b='A'*'B';
char c='A'+2;
cout << a <<endl;//1
cout << b <<endl;//4290=65*66
cout << c <<endl;//C
return 0;
}
2.字符数组
字符串就是字符数组加上结束符‘\0’,可以使用字符串来初始化字符数组,但要注意,每个字符串结尾会暗含一个‘\0’字符,因此字符串数组的长度至少比字符串数组的长度多1
#include <string.h>为头文件
char a1[]={'C','+','+'};//列表初始化,没有空字符
char a2[]={'C','+','+','\0'};//列表初始化,含有显示的空字符
char a3[]='C++';//a2[]和a3[]一样都是四个都是字符数组,a1[]是字符串,\0是空字符。自动添加表示字符串结尾的空字符
printf("%s\n",a3);//输出:c++
cout<<a3<<endl;//输出c++
char a2[]={'A','B','C','\0'};
char a3[]="ABCDEF";
cout << a2+1<<endl;//输出BC,从1开始输出
printf("%s\n",a3+2);//输出CDEF,从第二个开始输出,跟指针类似
return 0;
char s[100]
scanf("%s",s);//一定不要加&符号,因为字符串s本身就是一个指针
cout << s <<endl;//读入abcdef,输出abcdef
return 0;
char s[100];
cout << s+2 << endl;//从下标2开始读
cout << s[1] <<endl;//是数组从第一个下标开始
return 0;
char str[100];
cin >> str;//输入字符串时,遇到空格或者回车就会停止。
cout << str <<endl;//输出字符串时,遇到空格和回车不会停止。
printf("%s\n",str);
char s[100];
fgets(s,100000000,stdin);//读入一整个字符串,包括空格
cout << s << endl;
//如果string 的话,这样可以用getline(cin,s)
string s;
getline(cin,s);
cout << s <<endl;
//或者用puts(s)读入
scanf("%s",s);
puts(s);
printf("%s\n",s);
return 0;
3.字符数组常用函数
需要引入头文件#include <string.h>
(1)strlen(s)求字符串长度
(2)strcmp(a,b),比较两个字符串的大小,a<b返回-1,a==b返回0,a>b返回1,这里的比较方式是字典序
(3)strcpy(a,b),将字符串b复制给从a开始的字符串数组
//(2)例如
#include <cstdio>
#include <iostream>
#include <cstring>
int main()
{
char s1[100],s2[100];
scanf("%s",s1);
cout << strcmp(s1,"abc") << endl;//例如输入abc则输出0,输入abb输出-1,输入abd输出1
}
到1.5字符串34:50