IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++之String容器 -> 正文阅读

[C++知识库]C++之String容器


我们在C语言中定义一个字符串时,一般都是用一个字符类型的指针char *来创建一个字符串,或者创建一个字符数组,而在C++中提供了一个容器类,他的底层封装好了指针,并且还提供了很多方便的函数供我们来调用

string构造函数

既然是一个类,那么肯定里面是有构造函数的,而构造函数有这几种

无参的构造函数

string s1;

参数为字符串的构造函数

string s2("aaa");

拷贝构造函数

string s3(s2);

参数是字符的构造函数

string s4(10,'a');

string赋值

在C语言中,char *型虽然可以指向任意字符串,但是会涉及到开辟空间的问题,一不小心可能会有野指针或者段错误,在C++中字符串赋值就封装好了可以安全操作的函数。

1.等号赋值,这里的等号其实是容器中重载过的等号,原型是string & operator =();
2.类内函数assign
#include <iostream>
#include <string>
using namespace std;

void test(){
        string s1;
        s1="hello world";
        cout<<s1<<endl;
        string s2=s1;
        cout<<s2<<endl;
        string s3;
        s3='h';
        cout<<s3<<endl;
        string s4;
        s4.assign("你好");
        cout<<s4<<endl;
        string s5;
        s5.assign(s4);
        cout<<s5<<endl;
        string s6;
        s6.assign("nihao",3);
        cout<<s6<<endl;
        string s7;
        s7.assign(10,'b');
        cout<<s7<<endl;
}
int main(){
        test();
        return 0;
}

请添加图片描述

string字符串拼接

C语言中提供了一个字符串拼接的函数strcat(),在C++中也提供了

1.重载+=运算符:原型是string & operator+=();
2.类内函数append
#include <iostream>
#include <string>
using namespace std;

void test(){
        string s1="A";
        s1+="B";
        cout<<s1<<endl;
        s1+='C';
        cout<<s1<<endl;
        string s2="D";
        s1+=s2;
        cout<<s1<<endl;
        s1.append("E");
        cout<<s1<<endl;
        s1.append("FGHIJ",1);
        cout<<s1<<endl;
        string s3="G";
        s1.append(s3);
        cout<<s1<<endl;
        s1.append("abcdefg",2,3);
        cout<<s1<<endl;
}
int main(){
        test();
        return 0;
}

请添加图片描述
注意这里拼接的都是字符串所以不能接char类型的,赋值是可以直接赋值char类型

string查找和替换字符串

int find(const string& str, int pos = 0) const;
//查找str第一次出现位置,从pos开始查找
int find(const char* s, int pos =0) const;
//查找s第一次出现位置,从pos开始查找
int find(const char* s, int pos, int n) const;
//从pos位置查找s的前n个字符第一次位置
int find(const char c, int pos =0) const;
//查找字符c第一次出现位置
int rfind(const string& str, int pos = npos ) const;
//查找str最后一次位置,从pos开始查找
int rfind(const char* s, int pos = npos ) const;
//查找s最后一次出现位置,从pos开始查找
int rfind(const char* s, int pos, int n) const;
//从pos查找s的前n个字符最后—次位置
int rfind(const char c, int pos =0) const;
//查找字符c最后一次出现位置

如果没找到则返回-1

string& replace(int pos, int n, const string& str);
//替换从pos开始n个字符为字符串str
string& replace(int pos, int n,const char* s ) ;
//替换从pos开始的n个字符为字符串s

字符串比较

和C语言中的strcmp()几乎一样

int  compare(const string & s) const
int compare(const char *s) const

返回值有三个,1,-1,0
当两个字符串相等返回0,s1>s2则返回1,s1<s2则返回-1

字符串存取

因为字符串底层就是字符数组,所以也可以通过下标来读或存

1.char & operator[](int)
2.内部的at函数
#include <iostream>
#include <string>
using namespace std;
void test(){
        string s1="abcdefg";
        for(int i=0;i<s1.size();i++){
                cout<<s1[i];
        }
        cout<<endl;
        for(int i=0;i<s1.size();i++){
                cout<<s1.at(i);
        }
}
int main(){
        test();
        return 0;
}

请添加图片描述

string插入和删除

string& insert(int pos,const char* s);
//插入字符串
string& insert(int pos, const string& str);
//插入字符串
string& insert(int pos, int n, char c);
//在指定位置插入n个字符c
string& erase(int pos, int n = npos);
//删除从Pos开始的n个字符

string获取子串

C语言中有strstr()获取子串

string substr(int pos,int n) const
返回从pos开始的n个字符串
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:09:57  更:2021-09-02 11:11:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:06:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码