当前位置: 首页 > news >正文

C++容器string的运用和注意

介绍

        首先,先说明,string在C++的string头文件中定义,而在C语言中的字符串就是字符数组,在C++中,string容器相当于C语言中的字符数组,string比C语言中的字符数组更为好用,如:C++中cin/cout可以直接读写string类型,但却不能读写字符数组,string还可以像整数那样"相加",并且string容器还支持许多流式的读写以及各种的函数和运算符操作,但是string的运算速度有些慢。


一,string的赋值操作

1,直接用string函数进行初始化

        具体功能和解释如下:

#include<iostream>
#include<string>
using namespace std;
int main()
{string s1;const char* a = "abcd";string s2(a);//进行初始化s2,等效于s2 = acout << "s2 = " << s2 << endl;s1 = s2;//不可s1 = a,因为在此种数组结构中string形式才可以直接赋值cout << "s1 = " << s1 << endl;string s4(10, 'a');//放入10个a,这里第二个参数只能是字符,不能是串cout << "s4 = " << s4 << endl;string s5(a, 1, 2);//从a第1个位置上开始的2个元素放入s5中cout << "s5 = " << s5 << endl;string s6("abcdef",5);//将串"abcdef"的前5个元素赋给s6cout << "s6 = " << s6 << endl; return 0;
}

        在这里要说明的是,运用以上方式进行赋值时不能先建立,后赋值,必须建立时就进行初始化。即:

//以下是错误的运用

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s1;
    const char* a = "abcd";
    string s2;
    s2(a);

    string s4;
    s4(10, 'a');

    string s5;
    s5(a, 1, 2);

    string s6;
    s6("abcdef", 5);
    return 0;
}

2,assrgn函数的赋值操作

        在很多情况我们需要对string进行赋值操作,若要用类似于以上的方式进行赋值,要用string容器中所支持的assign函数,如下代码:

//以下是正确的用法

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s1;
    const char* a = "abcd";
    string s2;
    s2.assign(a);

    string s4;
    s4.assign(10, 'a');

    string s5;
    s5.assign(a, 1, 2);

    string s6;
    s6.assign("abcdef", 5);
    return 0;
}

        以上是常见的assign四种赋值操作。

二,添加串append的运用

        append的作用跟C语言中的strcat函数作用相同(但要比此结构高级很多),此函数可在不不同位置进行添加,运用比较灵活。

        C++容器string中支持append的运用,此函数的用法与assig的用法一样,只是功能不同罢了,前面代码已经说明了很清楚了这种用法,在这里我就直接用代码跟大家演示:

#include<iostream>
#include<string>
using namespace std;
int main()
{string s7;s7.append("abc");//将" abc"加在s7的末尾cout << "s7 = " << s7 << endl;s7.append("abcdef", 3);//将数组"abcdef"的前3个字符加在s7的后面cout << "s7 = " << s7 << endl;s7.append(5, 'w');//将5个字符'w'加在s7的末尾cout << "s7 = " << s7 << endl;s7.append(s7, 4, 3);//截取从s7的第4个下标字符开始,往后的3个字符,下标从0开始cout << "s7 = " << s7 << endl;return 0;
}

三,string容器的插入,删除,访问,截取操作

        插入操作的函数是insert,删除操作的操作有erase和pop(其中erase的删除比较灵活,pop删除操作在string容器支持中只能删除首元素),访问元素可以用C语言中的符号"[]"或这C++中的at,截取操作有substr。具体使用如下代码:

#include<iostream>
#include<string>
using namespace std;
int main()
{//insert插入操作string s1 = "abc";s1.insert(1, "123");//从第1个位置起插入"123"串,下标从0开始cout << "s1 = " << s1 << endl;s1.insert(0, 2, '5');//向开头位置插入2个字符'5',第三个参数不能为串,只能为字符cout << "s1 = " << s1 << endl;//at访问操作,s.at(i)等效于s[i]string s = "abcdefg";cout << "s = ";for (int i = 0; i < s.size(); i++) {cout << s.at(i) << " ";}cout << endl;//erase和pop删除操作的运用string str1 = "abcdefg";str1.pop_back();//删除末尾元素的操作cout << "str1 = " << str1 << endl;str1.erase(1, 3);//从第1个下标起删除三个字符,下标从0开始cout << "str1 = " << str1 << endl;//substr获取截取子串的运用string str2 = "abcdef";string a = str2.substr(1, 3);//从str的第1个下标起截取3个字符赋给acout << "a = " << a << endl;return 0;
}

        总:以上就是C++中容器string的几种常规操作,对于初学者而言,C++的语法和运用层次虽然简单,但C++的语法过多,结构凌乱,可能导致学者容易过忘,本文章将其中常规的操作基本全部整理融合,方便学者学习可记忆,希望得到大家支持。

http://www.lryc.cn/news/156586.html

相关文章:

  • 用对工具,你的全渠道电子商务业务就成功了一半
  • TDengine学习(1):采集量(Metric),标签(label),数据采集点,表,超级表,子表、库
  • 【洛谷 P1029】[NOIP2001 普及组] 最大公约数和最小公倍数问题 题解(辗转相除法)
  • Golang 中的 errors 包详解:返回自定义 error 类型
  • C#开发的OpenRA游戏之信标按钮
  • 16字节协议的串口通信
  • 升哲科技城市级“算力+数字底座”服务亮相2023服贸会
  • 动态规划之简单多状态
  • 跨数据中心Multi-Fabric解决方案:L2和L3网络的高效连接和扩展
  • upload-labs靶场通关详解
  • Leetcode刷题笔记--Hot41-50
  • 「MySQL-02」数据库的操纵、备份、还原和编码规则
  • Effective C++条款24——若所有参数皆需类型转换,请为此采用non-member涵数(设计与声明)
  • 决策工具箱:战略分析必备工具与框架
  • 【压力测试指南】没有任何文档,小白也可以做的压力测试
  • Linux: memory: memblock: debug
  • 搬家快递服务小程序的便利性
  • 软件架构师 Debugging
  • ​7.1 项目1 学生通讯录管理:文本文件增删改查(C++版本)(自顶向下设计+断点调试) (A)​
  • 学习使用php判断阿里云oss图片单图或批量上传、查询图片文件是否存在
  • 重磅| Falcon 180B 正式在 Hugging Face Hub 上发布!
  • Linux命令行
  • [持续更新]计算机经典面试题基础篇Day1
  • ProcessWindowFunction 结合自定义触发器的陷阱
  • 什么是jvm
  • kettle通过java步骤获取汉字首拼
  • Conformer: Local Features Coupling Global Representationsfor Visual Recognition
  • java8-Stream流常用API
  • React 任务调度
  • 小白开始学习C++