认识string(三)详解


感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒 个人主页
🥸🥸🥸 C语言
🐿️🐿️🐿️ C语言例题
🐣🐣🐣 python
🐓🐓🐓 数据结构C语言
🐔🐔🐔 C++
🐿️🐿️🐿️ 文章链接目录

Modifiers

push_back

这个函数在之前数据结构的文章中有模拟实现出来过,就是尾差,只不过这里的push_back是尾差字符

int main()
{
	string s1("jackjohn");
	s1.push_back('!');
	cout << s1 << endl;
	return 0;
}

在这里插入图片描述

append

append就是在当前string中的字符串里,追加一个字符串

int main()
{
	string s1("jackjohn");
	s1.append("6666");
	cout << s1 << endl;
	return 0;
}

在这里插入图片描述
append有六个函数,和之前文章认识string(一)详解中的Construct string非常相似,所以就不介绍了
在这里插入图片描述
在这里插入图片描述
这是他的一些例子

在这里插入图片描述

operator+=

operator+=其实就是结合了上面两个的功能

int main() {
	string s1("jackjohn");
	cout << s1 << endl;
	s1 += '1';
	cout << s1 << endl;
	s1 += "!!!!!!";
	cout << s1 << endl;
}

在这里插入图片描述

assign

assign的功能就是覆盖掉当前的字符串

int main() {
	string s1("jackjohn");
	cout << s1 << endl;
	s1.assign("66666666");
	cout << s1 << endl;
}

在这里插入图片描述

insert

insert就是前插的意思,因为实现的函数比较多,所以就不演示了
在这里插入图片描述
这是他的一些例子
在这里插入图片描述

erase

erase功能就是删除字符串的一部分
erase有3个函数
在这里插入图片描述
在这里插入图片描述

replace

replace是替换字符串中的某个字符,他的函数也很多,我们只需要知道他是用来干什么就行了
在这里插入图片描述
在这里插入图片描述

swap

swap只有一个void swap (string& str)
这是他的例子
在这里插入图片描述

String operations

find

find的功能是查找出字符串中的某个字符的位置,这是他的函数

在这里插入图片描述

他的返回值是size_t,当没有找到所想查找的字符时,就会返回npos,如果找到了就返回下标
在这里插入图片描述

substr

substr就是取某个位置后面的字符,这个可以和find结合起来

int main() {
	string s1("jackjohn");
	size_t a = s1.find('c');
	if (a != string::npos)
	{
		cout << a << endl;
		string b = s1.substr(a);
		cout << b << endl;
	}
	return 0;
}

在这里插入图片描述

rfind

rfind就是从后往前找,他有四个函数
在这里插入图片描述
在这里插入图片描述

Non-member function overloads

operator+

operator+就是让一个字符串追加到另一个字符串后面
这是他的函数
在这里插入图片描述

int main()

{
    string s1 = "jack";
    string s2 = "john";
    cout << s1 + s2 << endl;
    cout << s1 + "6666" << endl;
    return 0;
}

在这里插入图片描述

Class instantiations

wstring u16string u32string

wstring解释:宽字符的字符串类。这是使用wchar_t作为字符类型的basic_string类模板的一个实例,具有默认的char_trait和分配器类型(有关模板的更多信息,请参阅basic_strin)。

这里出现了一个陌生的宽字符的字符类型wchar_t
我们来看看他的介绍
在这里插入图片描述

u16string解释:16位字符的字符串类。这是使用char16_t作为字符类型的basic_string类模板的实例化,具有默认的char_traits和分配器类型(有关模板的更多信息,请参阅basic_strin)。

u32string解释:32位字符的字符串类。这是使用char32_t作为字符类型的basic_string类模板的实例化,具有其默认的char_traits和分配器类型(有关模板的更多信息,请参阅basic_strin)。

int main()

{
    char c1;
    wchar_t c2  ;
    char16_t c3;
    char32_t c4;
    cout << sizeof(c1) << " " << sizeof(c2) << " " << sizeof(c3) << " " << sizeof(c4) << endl;
    return 0;
}

在这里插入图片描述

编码扩展

ASCLL码

编码在我们之前中就已经了解过了,比如ASCLL码,ASCLL码的全称为American Standard Code for Information Interchange,也就是美国人发明的
下面是ASCLL码表
在这里插入图片描述
我们知道计算机存储都是通过0101这种方式存储的,也就是我们想要存储一句英文比如jackjohn时,首先要将这个句子中的每一个字符映射成对应的ASCLL码值,然后通过0101的这种形式去存储

统一码的由来

ASCLL码表中并没有一个ASCLL码值可以表达中文,以及其他国家的一些语言,并且由于一些国家的语言太多了,比如中文,如果只用一个字节来存储的话是无法表示完中文的,所以就有了统一码,这个统一码是用来表示全世界的语言
在这里插入图片描述

统一码的一个规律

我们举一个例子
char buff的大小是5个字节
在这里插入图片描述
再来看看下面这个例子
在这里插入图片描述
我们发现i=0和1的时候改变的是杰字,并且改变后的拒和据都和杰的发音非常相似,i=2和3的时候改变的是克,而浪和捞与克发音好像不是那么相似,但是事实上是有这么一个规律的,也就是说这个表是按照同音字编的

乱码

乱码出现的情况一般是使用的编码表和查的编码表不同,以及没有初始化然后在查表的时候恰好查到烫烫烫这个字
在这里插入图片描述

Convert to strings

to_string

英文解释:A string object containing the representation of val as a sequence of characters.

翻译:个字符串对象,将val表示为一系列字符。

我们举个例子来了解一下

int main()
{
    int a = 66666;
    double b = 6.66666;
    string s1 = to_string(a);
    string s2 = to_string(b);
    cout << s1 << endl;
    cout << s2 << endl;
    return 0;
 }

在这里插入图片描述

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值