C++--标准库 字符串类

一.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类的应用使得问题的求解变得简单

原文地址:https://blog.51cto.com/13475106/2410990

时间: 2024-10-03 15:11:55

C++--标准库 字符串类的相关文章

实现C++标准库string类的简单版本

后续待更新. 1 #ifndef STRING_H 2 #define STRING_H 3 4 #include <cassert> 5 #include <utility> 6 #include <iostream> 7 8 namespace jz 9 { 10 11 /************************************************************************/ 12 /* 重新实现C风格字符串处理函数 */

[译] Python 2.7.6 标准库——字符串

译自:https://docs.python.org/2/library/index.html业余时间翻译,有时间有心情有思路有冲动就翻译,部分翻译为意译或替换为更容易理解的意思,水平特有限,仅供自己参考 格式有时间再调 7. 字符串服务 7.1. string - 通用字符串操作 7.2. re - 正则表达式操作 7.3. struct - 二进制字符串操作 7.4. difflib - 计算序列? 7.5. StringIO - 以文件形式读取字符串 7.6. cStringIO - St

C++ 标准库异常类

转自:http://blog.csdn.net/zhq651/article/details/8425579 exception C++标准库异常类继承层次中的基类为exception,其定义在exception头文件中,它是C++标准库所有函数抛出异常的基类,exception的接口定义如下: namespace std { class exception { public: exception() throw(); //不抛出任何异常 exception(const exception& e

C++入门学习——标准库 string 类的使用

在 C++ 中,为了方便处理字符串,引入了 string 类.string 类型支持长度可变的字符串. 使用 string 之前,必须包含相应的头文件,string 属于 std 命名域的,因此需要通过命名限定: #include <string> using std::string; //using namespace std; string对象的定义和初始化 使用示例如下: #include <iostream> #include <string> using st

C++学习笔记(7)标准库string类

一.初始化string对象: 直接初始化:string a("value"); 拷贝初始化:string a = "value"; 二.读写string对象 注:cin会忽略头尾空白处,保留空白符需要使用getline: empty函数判断是否为空,size函数计算字符串长度. 不能把多个字面值直接相加赋值给string对象,字符串字面值不是string对象. 三.范围for语句的使用 string str("some,string!!!");

字符串类设计与应用

题目描述 模拟标准库字符串类实现你自己的字符串类.该类需具有构造.字符串连接+.取子串和复制构造.移动构造.复制赋值.移动赋值.输出等功能.要求使用动态分配存储字符串内容. 输入描述 测试程序有4个字符串,每个样例前两行含长度不超过200的俩字符串,赋值给前2个字符串对象,后面若干指令,每个指令占一行,分别由指令码和所需参数组成,空格分隔,每个指令码具有不同参数和意义; 指令有下述几种 : 指令P i代表输出字符串i; 指令A i j代表字符串i赋值给字符串j; 指令C i j k 代表将字符串

把《c++ primer》读薄(3-3 标准库bitset类型)

督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. //开头 #include <bitset> using std::bitset; 问题1.标准库bitset类型(模版) 需要处理二进制位的时候,可以使用c++标准库提供的bitset类型,它也是类模版,类似vectro容器,唯一不同的是,bitset类型需要说明长度,使用常量表达式给出的整型字面值或者已经初始化的cosnt对象. bitset<32> bit;//从0到31位算的,bit的32位每位初始化为

C++ 标准库概览(一分钟就看完了)

C++ 标准库以若干头文件的方式提供. 下面简单介绍一个各头文件的内容. 第一部分 容器 Containers <array> C++11 新增.提供了容器类模板 std::array,固定大小数组的容器. <bitset> 提供了专门用来存放位组(一系列 bit)的容器类 std::bitset. <deque> 提供了双向队列容器类模板 std::deque. <forward_list> C++11 新增.提供了单向链表容器类模板 std::forwa

Python 标准库、第三方库

Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具.这些库可用于文件读写.网络抓取和解析.数据连接.数清洗转换.数据计算和统计分析.图像和视频处理.音频处理.数据挖掘/机器学习/深度学习.数据可视化.交互学习和集成开发以及其他Python协同数据工作工具. 为了区分不同对象的来源和类型,本节将在描述中通过以下方法进行标识: [Python内置函数]:Python自带的内置函数.函数无需导入,直接使用.