字符
//偶然发现 自己知识点漏洞太多了 于是 好好复习一遍吧
-----------------------------------------------------------------------------
一、字符类型
1.常量
const 字符常量 = ‘字符’
2.变量
char 字符变量
3.string
作用:
我们会习惯性的把字符串str1的值赋值给字符串str2写成str2 = str1
但是
这是不对的
不过,为了方便使用字符串,C++提供了另外一种数据类型--------string
用法:
定义及初始化:
string str1; //定义一个字符串str1,初始化为空
string str2(str1); //用str1初始化str2
string str3(“world”) //str3初始值为"word’
string str4(n,'a') //str4初始化值为n个“a”
输入:
1.cin-------(读入单个单词)
格式1: cin>>字符串变量
(遇到空格,换行符都被认为是字符串的结束)
格式2:cin>>字符串变量1>>字符串变量2>>字符串变量3>>...
(要有分隔符,eg.一个或多个空格、换行符)
(可输入中文,可以认为是任意长度的字符串,但受计算机内存限制)
2.getline-----(读入一个句子)
格式3:getline(cin,字符串常量)
while(c)in>>t的功能是循环读入数据,再度不到的时候停止循环
s+=' '+t是在s的后面加一个空格和字符变量t,是一种字符串连接的简单方式
3.scanf--------(仅获取一个单词)(从光标开始的地方到空格)
格式4:scanf("%s",字符串名称);
这里字符串名称之前不加&这个取地址符
仅输入字符串的内容即可(系统自动在输入的字符串常量后添加‘\0’
输入多个字符串时,以空格分割
4.gets-------(只输入一个字符串)(从光标开始的地方到换行符)
格式5:gets(字符串名称)
输出:
1.printf(“%s”,字符串名称);
2.puts(字符串名称);
输出一个字符串和一个换行符
二、字符数组
也有一维二维三维之分
1.定义格式
第一个元素是从ch[0]开始
格式: [储存类型] char 数组名[常量表达式]
2.字符数组的赋值
char ch[5]={'a','b','c','d','e'}; 剩余元素默认为空字符
char ch[3][4]={"abc","uyt","edw"};在数组ch中存放3个字符串,每个字符串长度不得大于3
char ch[3]='a';
3.字符常量和字符串常量的区别
字符常量用单引号括起来----字符串常量用双引号括起来
单个字符---- 多个字符
可以把一个字符常量赋给一个字符变量,但不可以把一个字符串常量赋给一个字符变量
字符常量占一个字节,字符串常量占2个字节,(存放结束标志‘\0’);
函数格式 |
函数功能 |
strcat(字符串名1,字符串名2) |
将字符串2连接到字符串1后边,返回字符串1的值。 |
strncat(字符串名1,字符串名2,长度n) |
将字符串2前n个字符连接到字符串1后边,返回字符串1的值。 |
strcpy(字符串名1,字符串名2) |
将字符串2复制到字符串1后边,返回字符串1的值。 |
strncpy(字符串名1,字符串名2,长度n) |
将字符串2前n个字符复制到字符串1后边,返回字符串1的值。 |
strcmp(字符串名1,字符串名2) |
比较字符串1和字符串2的大小,比较的结果由函数带回; 如果字符串1>字符串2,返回一个正整数; 如果字符串1=字符串2,返回0; 如果字符串1<字符串2,返回一个负整数; |
strncmp(字符串名1,字符串名2,长度n) |
比较字符串1和字符串2的前n个字符进行比较,函数返回值的情况同strcmp函数; |
strlen(字符串名) |
计算字符串的长度,终止符’\0’不算在长度之内 |
strlwr(字符串名) |
将字符串中大写字母换成小写字母 |
strupr(字符串名) |
将字符串中小写字母换成大写字母 |
三、sscanf和sprintf
格式:
sscanf(s,"%d",&N); 将字符串s转换成数字N;
sprintf(s,"%d",N); 将整数N转化成字符串:
四、string类型的操作
见信息学奥赛一本通训练指导教程P128andP131