一.C++标准库
C++标准库 1.C++标准并不是C++语言的一部分 2.C++标准库是由类库和函数库组成的集合 3.C++标准库中定义的类和对象位于std命名空间中 4.C++标准库的头文件都不带.h后缀 5.C++标准库涵盖了C库的功能 C++编译环境的组成 C++标准库预定义了多数常用的数据结构 代码示例
二.字符串类
Q:C语言存在的问题 1.C语言不支持真正意义上的字符串 2.C语言用字符数组和一组函数实现字符串操作 3.C语言不支持自定义类型,因此无法获得字符串类型 解决方法 1.从C到C++的进化过程引入了自定义类型 2.在C++中可以通过类完成字符串类型的定义
标准库中的字符串类 1.C++语言直接支持C语言的所有概念 2.C++语言中没有原生的字符串类型 3.C++标准库提供了string类型(直接支持字符串连接,支持字符串的大小比较,支持子串查找和提取,支持字符串的插入和替换) 字符串按大小排列(按照字典)与一连串的排列代码示例
#include <iostream>
#include <string>
using namespace std;
void string_sort(string a[], int len)//大小排列
{
for(int i=0; i<len; i++)
{
for(int j=i; j<len; j++)
{
if( a[i] > a[j] )//字符串大小比较
{
swap(a[i], a[j]);
}
}
}
}
string string_add(string a[], int len)//添加
{
string ret = "";
for(int i=0; i<len; i++)
{
ret += a[i] + "; ";
}
return ret;
}
int main()
{
string sa[7] =
{
"Hello World",
"D.T.Software",
"C#",
"Java",
"C++",
"Python",
"TypeScript"
};
string_sort(sa, 7);
for(int i=0; i<7; i++)
{
cout << sa[i] << endl;
}
cout << endl;
cout << string_add(sa, 7) << endl;
return 0;
}
运行结果如图所示 1为大小排列的结果,2为一串排列的结果
题目分析:字符串循环右移 示例:abcdefg循环右移3位得到efgabcd 分析:1.先找到所需移位字符串的位置 2循环经过一定的次数会重复
#include <iostream>
#include <string>
using namespace std;
string operator >> (const string& s, unsigned int n)
{
string ret = "";
unsigned int pos = 0;
n = n % s.length();//长度与循环次数取余
pos = s.length() - n;//确定循环的位置
ret = s.substr(pos);//找到位置
ret += s.substr(0, pos);//将循环位置的前面的字符串添加到该点后面
return ret;
}
int main()
{
string s = "abcdefg";
string r = (s >> 3);
cout << r << endl;
return 0;
}
运行的结果如图所示 小结 1.应用开发中大多数的情况都在进行字符串处理 2.C++中没有直接原生的字符串类型 3.标准库中通过string类支持字符串的概念 4.string类支持字符串和数字的相互转换 5.string类的应用使得问题的求解变得简单