字符串相关内容汇总

c++:

C++ 提供了以下两种类型的字符串表示形式:

  1. C 风格字符串

实际上是使用 null 字符 '\0' 终止的一维字符数组。

相关函数:

1strcpy(s1, s2);
复制字符串 s2 到字符串 s1。
2strcat(s1, s2);
连接字符串 s2 到字符串 s1 的末尾。
3strlen(s1);
返回字符串 s1 的长度。
4strcmp(s1, s2);
如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回值小于 0;如果 s1>s2 则返回值大于 0。
5strchr(s1, ch);
返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
6strstr(s1, s2);
返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。

 

  • C++ 引入的 string 类类型

这个用到的最多,其为c++标准库提供,支持更多功能,他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个泛型类出现,他集成的操作函数足以完成我们大多数情况下的需要,可以把它看成是C++的基本数据类型。

头文件:#include<string>

相关函数:

1. empty() // 若s为空串,则返回true,否则返回false;

2 . size()和length() //现有字符数;

3 . 赋值,第一个赋值方法当然是使用操作符=;

还可以使用成员函数assign(),这个成员函数可以使你更灵活的对字符串赋值:

s.assign(str); 

s.assign(str,1,3);//如果str是”iamangel” 就是把”ama”赋给字符串

s.assign(str,2,string::npos);//把字符串str从索引值2开始到结尾赋给s

s.assign(“gaint”); 

s.assign(“nico”,5);//把’n’ ‘I’ ‘c’ ‘o’ ‘\0’赋给字符串

s.assign(5,’x’);//把五个x赋给字符串

4 . 把字符串清空的方法有三个:s=””;s.clear();s.erase();

string提供了很多函数用于插入(insert)、删除(erase)、替换(replace)、增加字符(+=、append()、push_back()):
                s+=str;//加个字符串
                s+=”my name is jiayp”;//加个C字符串
                s+=’a’;//加个字符
                s.append(str);
                s.append(str,1,3);//不解释了 同前面的函数参数assign的解释
                s.append(str,2,string::npos)//不解释了
                s.append(“my name is jiayp”);
                s.append(“nico”,5);
                s.append(5,’x’);
                s.push_back(‘a’);//这个函数只能增加单个字符 对STL熟悉的理解起来很简单

5.在string中间的某个位置插入字符串,用insert()函数,这个函数需要你指定一个安插位置的索引,被插入的字符串将放在这个索引上。

	str1.insert(0,"123abc");
	str1.insert(1,"..");//1..23abc

 

这种形式的insert()函数不支持传入单个字符,这时的单个字符必须写成字符串形式,为了插入单个字符,insert()函数提供了两个对插入单个字符操作的重载函数:
insert(size_type index,size_type num,chart c)

insert(iterator pos,size_type num,chart c)。

其中size_type是无符号整数,iterator是char*,

所以,你这么调用insert函数是不行的:insert(0,1,’j’);这时候第一个参数将转换成哪一个呢?

你必须这么写:insert((string::size_type)0,1,’j’)!

str1.insert((string::size_type)4, 1, ' ');
cout << str1 << endl;//1..2 3abc

删除函数erase()

	//从位置0开始替换2个字符为空字符
	str1.replace(0, 2, "  ");//  .hu cheng ming yesterday once more
	str1.replace(0, 3, "z");//zhu cheng ming yesterday once more
	//从位置3开始以后的字符全删掉
	str1.erase(3);//zhu
	//从位置0开始删除3个字符
	str1.erase(0, 3);//""//没有了

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值