C/C++学习笔记笔记28:字符与字符串
来源:互联网 发布:淘宝卖家怎么开发票 编辑:程序博客网 时间:2024/05/21 10:03
字符串是数据结构中相对简单的一种数据结构。
关于字符串的基本知识:
1:字符与字符串
字符常量:字符常量是用单撇号括起来的一个字符
<常见的控制字符也是一种特殊形式的字符常量,以\开头的字符序列,在屏幕上不能显示的>
2:字符与字符串的存储
1)字符
将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符相应的ASCII码存放到存储单元中。
在内存中,字符数据以ASCII码存储,它的存储形式就与整数的存储形式类似。这样字符型数据与整型数据之间可以通用。
所以一个字符数据既可以以字符形式输出,也可以以整数形式输出。——运用的其实就是ASCII码
关于字符的问题,在做输出的时候,可以输出字符类型的,也可以输出整型的。这二者通用。另有一个常见的问题就是大小写转换的问题,还有就是在数据结构中模式匹配的问题。这在接下来会依次探讨:
e.g.1:大小写字符转换
#include <stdio.h>void main(){char c1,c2;c1=‘a’;c2=‘b’;c1=c1-32;c2=c2-32;printf("%c%c".c1,c2);}
是因为大小写在ASCII码表中相差32个单位。所以用小写的存储减去32就可以得到大写的。
2)字符串
字符串常量是一对双撇号括起来的字符序列。
C语言规定:在每个字符串常量的结尾加一个"字符结束标识",以便判断字符串结束。以'\0'作为字符串结束标志。所以如果说是“china”的字符串,它其实是占6个字符,而不是5个字符。
2:整数与字符串之间的转换
e.g.1怎么将整数转化为字符串,并且不用函数itoa?
分析:itoa函数如何使用?
itoa函数是取整数输入值,并将其转换为相应数字的字符串。
函数原型:char *itoa(int value,char *string,int radix);
原型说明:
value:表示欲转换的数据
string:目标字符串的地址
radix:转换后的进制数,可以是16进制,10进制等。
运用:
#include <iostream>;#include <stdio.h>int main(void){ int number = 12345; char string[7]; itoa(number,string,10); printf("integer = %d string = %c\n",number,string[1]);return 0;}如果不用itoa函数又该如何转换?
方法:整数转换为字符串,可以采用加'0',在逆序的方法,整数加'0'就会隐形的转换为char类型的数。
运用:
<pre name="code" class="cpp">#include <iostream>#include <stdio.h>int main(void){ int num=12345,j=0,i=0; char temp[7],str[7]; while(num){ temp[i]=num%10+'0'; i++; num=num/10;} temp[i]=0; printf("temp=%s\n",temp); i=i-1; printf("temp=%d\n",i); //刚刚转换的字符串是逆序的,必须把它反转过来 while (i>=0) { str[j]=temp[i]; j++; i--; } str[j]=0; printf("string =%s\n",str); return 0;}
e.g2:字符串又是如何转换成整数的?
分析:字符串转换成整数,可以采用减'0'再乘以10累加的方法。字符串减'0'就会转化为整型数据。
运用:
#include <iostream>#include <stdio.h>int main(void){ int num = 12345,j=0,i=0,sum=0; char temp[7]={'1','2','3','4','5','\0'},str[7]; while(temp[i]) { sum=sum*10+(temp[i]-'0'); i++; } printf("sum=%d\n",sum); return 0;}
针对上面的问题有个疑问,为什么加上'\0'就可以辨别字符与整型的区别呢?
对于这个问题还得分析下'\0'这个东西,'\0'代表ASCII码为0的字符,ASCII码为0的字符不是一个显示的字符,而是一个“空操作符”,即它什么也不做。用它来作为字符串结束标志不会产生附加的操作或增加有效字符,只是起到一个供辨别的标志。
补充:C语言标准库下的字符串函数
先约定如下:s、t分别表示(char*)类型的参数,cs、ct表示(const char *)类型的参数,它们都表示字符串。
n表示size_t类型的参数,c是整型参数。
常见的字符串函数有:
size_t strlen(cs); //求出cs的长度
char *strcpy(s,ct);//把ct复制到s中去char *strncpy(s,n,ct);//把ct中的n个字符复制到s中去
char *strcat(s,ct);//把ct复制到s字符串之后char *strncat(s,n,ct);//复制ct中的n个字符到s中去
int strcmp(cs,ct);//比较cs与ct的大小,分别返回正值、0、负值int strncmp(cs,n,ct);//比较cs和ct的大小,最多比较n个字符
char *strchr(cs,c);//在cs中查找第一个c出现的位置,并用指向这个位置的指针表示,如果没有则返回null;char *strrchr(cs,c);//在cs中查找最后一个c出现的位置
size_t strspn(cs,ct);//在cs中查找全部由ct里字符组成的序列,并返回其长度size_t strcspn(cs,ct);//在cs中查找全部由非ct里字符组成的序列,并返回其长度
char *strpbrk(cs,ct);//在cs里查找ct里的字符,返回第一个满足条件的字符出现的位置,没有时返回NULLchar *strstr(cs,ct);//在cs中查寻串ct(查询子串),返回ct作为cs的子串的第一个出现的位置,ct未出现在cs里时返回NULL
char *strerror(n);//返回与错误编号n相关的错误信息串(指向该错误信息串的指针)char *strtok(s,ct); //在s中查寻由ct中的字符作为分隔符而形成的单词
- C/C++学习笔记笔记28:字符与字符串
- 【C语言】学习笔记:字符串与字符数组
- C语言学习笔记:19_数组-字符数组与字符串(常用字符串函数)
- C/C++学习笔记:指针与字符串
- C/C++学习笔记32:字符串操作与字符子串问题
- C/C++学习笔记五(结构体、字符与字符串)
- C学习笔记--在字符串中删除指定的字符
- c语言学习笔记-字符
- C学习笔记(七)字符串与字符串函数
- C string 字符串 学习笔记
- 黑马程序员-------c语言学习笔记之数组与字符串
- c字符与字符串
- c语言学习笔记39字符数组
- C语言学习笔记字符读入读出
- 【C语言学习笔记】转义字符
- C二维数组与字符数组 笔记
- 《C与指针》学习笔记
- 《C与指针》学习笔记
- Eclipse背景颜色修改
- 常用CMD命令
- 基于System V Message queue的PHP消息队列封装
- Linux设备驱动程序学习笔记09:等待队列
- 【C#基础】【语法01】课后作业题 01-05
- C/C++学习笔记笔记28:字符与字符串
- 怎么破解男朋友的QQ邮箱?嘿客QQ2274417041
- Scrollview里嵌套listview
- 你会不会是“看错了”?
- juv rtmp client android speex音频解析 播放red5的音频流实现
- 抽象工厂+反射+配置文件 实现数据访问程序
- GROUP BY 与聚合函数 使用注意点
- ofbiz 登录时默认进入一个指定的模块
- xampp phpmyadmin的配置