目录
感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒 个人主页
🥸🥸🥸 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;
}