C++ 字符数组函数与string函数

来源:互联网 发布:三层夹胶玻璃价格 淘宝 编辑:程序博客网 时间:2024/05/18 12:31

字符串可以用字符数组与字符串变量两种方式来存储,效果类似。
一、用字符数组来存储字符串:
char st1[100],st2[100] ; //字符数组说明
cin>>st1>>st2;
long a,b;
输入:hello, world
则st1={‘h’,’e’,’l’,’l’,’o’,’,’,’\0’}
st2={‘w’,’o’,’r’,’l’,’d’,’\0}
字符’\0’为字符串结束标志
1. 字符数组长度
   strlen(st1); //如a=strlen(st1);b=strlen(st2); 则a=6,b=5
2. 字符数组比较
   不能直接比较,st1>st2是错误的,要用strcmp()函数
   strcmp(st1,st2); //st1=st2相等则输出0,st1<st2输出-1,st1>st2输出1
   strncmp(st1,st2,n);   把st1,st2的前n个进行比较。
3. 连接字符数组
   不能直接用st1=st1+st2;用strcat()函数
   strcat(st1,st2); //将st1和st2连接后赋给st1,本例连接后st1为”hello,world”
   strncat(st1,st2,n);   n表示连接上st2的前n个给st1,在最后不要加'\0'。
4. 替换
   strcpy(st1,st2); //用st2的值替换st1的值,字符数组不能如此赋值st1=st2或st1[]=st2[]都是错误的
   本例中st1值被替代为”world”
   strncpy(st1,st2,n); n表示复制st2的前n个给st1,在最后要加'\0'。
5. 其他函数
strchr(st1,ch) //ch为要找的字符。如strchr(st1,’e’);会截取出st1中以字母’e’开头的字符串,要用string类型的来存储,如string c1; c1=strchr(st1,’e’); 则c1为”ello”
   strspn(st1,st2); //返回st1起始部分匹配st2中任意字符的字符数。本例中”hello,”中的第一个字符’h’不能在”world”中找到匹配字符,因此返回值为 0。如st1=”rose”;st2=”worse”;则返回值为4,因为rose在worse中都能找到匹配字符。
   strrev(); //颠倒字符串


二、用字符串来存储字符串
string str1,str2; cin>>str1>>str2;
//如输入“hello, world”则str1=”hello,” str2=”world”
可直接赋值: str1=str2;
1. 字符串长度
   len = str1.length();
2. 字符串比较
   可以直接比较,即str1>str2;str1==str2;等
3. 连接
   可以直接连接,即str1 += str2;等
4. 字符串提取
   str2 = str1.substr(); //str2值被赋值为str1
str2 = str1.substr(pos1); //如str2=str1.substr(2);则str2=”llo”;
   str2=str1.substr(pos1,len1); //提取指定位置指定长度的字符串,如str2=str1.substr(1,2) ;则str2=”el”
5. 字符串搜索
   where = str1.find(str2); //返回str2是在str1中的最先被找到的位置
   where = str1.find(str2,pos1); pos1是从str1的第几位开始。
   where = str1.rfind(str2); 从后往前搜。
6. 插入字符串
   不是赋值语句。
   str1.insert(pos1,str2); //如str1.insert(2,str2)则str1=”heworldllo,”
    str1.insert(pos1,str2,pos2,len2);
    str1.insert(pos1,numchar,char); numchar是插入次数,char是要插入的字符。
7. 替换字符串
   str1.replace(pos1,str2);
   str1.replace(pos1,str2,pos2,len2);
8. 删除字符串
   str.erase(pos,len)
   str.clear();
9. 交换字符串
   swap(str1,str2);


注意:
1.要包含头文件#include<string>
2.在有些场合下用字符数组char st1[100]比string st2还好用些,可根据具体情况作不同选择。
3.在读入一个含有空格的字符串时用cin是不行的(cin读字符串或字符数组时,自动以空格或回车作为分格符)


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 收到领英的短信怎么办 狗半夜叫个不停怎么办 如果被鬼上身了怎么办 支付宝借钱不还怎么办 鞋子里鞋垫老跑怎么办 鞋垫在鞋里老串怎么办 网贷已经借不到怎么办 骨龄比实际年龄大怎么办 小孩崴脚了肿了怎么办 报到证过期2年多怎么办 报到证过了期限怎么办 报到证超过两年怎么办 报到证过期4年了怎么办 学校没发报到证怎么办 未报到证过期了怎么办 专升本的报到证怎么办 蓝色报到证丢了怎么办 报到证用过了怎么办 大学报到证丢了怎么办 qq好被冻结了怎么办啊 qq突然被冻结了怎么办 扣扣密码被冻结怎么办 蠕动泵不抽水了怎么办 失眠多梦压力大怎么办 大福的皮硬了怎么办 安卓手机root失败怎么办 你的手机已root怎么办 移动网不能看片怎么办 网站的密码忘了怎么办 拍拍贷换手机了怎么办 六个半月的宝宝发烧怎么办 5个月的小孩发烧怎么办 3个月小孩发烧怎么办 2岁宝宝感冒发烧怎么办 2岁宝宝发烧38度怎么办 2岁宝宝反复发烧怎么办 八个月的孩子发烧怎么办 2岁宝宝咳嗽厉害怎么办 2岁宝宝睡觉咳嗽怎么办 2岁宝宝感冒咳嗽怎么办 2岁宝宝晚上咳嗽怎么办