news 2026/4/27 8:39:52

C++——string

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++——string

文章目录

  • 1.string
    • 1.1string的几种初始化方式
  • 2.auto关键字
  • 3.string类对象的几种修改操作
  • 4.string类非成员函数
  • 5.拷贝
    • 5.1浅拷贝
    • 5.2深拷贝
    • 5.3写时拷贝

1.string

在使用string类时,必须包含#include <string>头文件以及using namespace std;

1.1string的几种初始化方式

  1. s1: 默认构造
  2. s2:用C字符串初始化
  3. s3:拷贝构造
  4. s4:子串构造
  5. s5:子串构造(只给起始位置)
  6. s6:从C字符串取前n个字符
  7. s7:重复字符构造
string s1; string s2("hello world"); string s3(s2); string s4(s2, 6, 1000);//第二个参数是起始位置,第三个参数是长度 如果长度超过了字符串的长度,则取到字符串的末尾 const string s5(s2, 6);//不传第三个参数,默认取到字符串的末尾 string s6("hello world", 5); string s7(5, 'n'); cout << s1 << endl; cout << s2 << endl; cout << s3 << endl; cout << s4 << endl; cout << s5 << endl; cout << s6 << endl; cout << s7 << endl; cout << "****************" << endl;

代码结果:

hello world hello world world world hello nnnnn ****************

2.auto关键字

  1. 在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,后来这个不重要了。在C++11中,标准委员会变废为宝赋予auto全新的含义即:auto不再试一个存储类型指示符了,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得
  2. auto来声明指针类型时候,autoauto*没有任何区别,但是用auto声明引用类型时则必须加&
  3. 当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量
  4. auto不能作为函数的参数,可以做返回值,但是这种做法建议谨慎使用。
  5. auto不能直接用来声明数组。

3.string类对象的几种修改操作

  1. push_back():在字符串后面尾插一个字符。
  2. append():在字符串后追加一个字符串。
  3. operator+=在字符串后追加字符串。
  4. c_str()返回C格式字符串。
  5. substr()在str中从pos位置开始,截取n个字符,然后将其返回。

4.string类非成员函数

  1. operator+:传值拷贝会导致低效率。
  2. operator<<:输出运算符重载。
  3. operator>>:输入运算符重载。
  4. getline:获取一行字符串(直至遇到换行符才停止获取)
  5. relational operators:大小比较

5.拷贝

5.1浅拷贝

也称为位拷贝,编译器只是将对象中的值拷贝过来,如果对象中管理资源,最后就会导致多个对象共享同一份资源,当一个对象销毁时就会将该资源释放掉,而让另一些对象不知道资源已经释放掉,对该资源进行访问的时候就会报错。

5.2深拷贝

为了避免浅拷贝可能出现的问题,深拷贝使每一个对象都有一份独立的资源,不需要和其他对象共享。一般适用于类中资源的管理,包括其拷贝构造函数,赋值运算符重载以及构造函数必须要显式给出。

5.3写时拷贝

写实拷贝是在浅拷贝的基础上增加引用技术的方式来实现的,其意向也和深拷贝一样防止浅拷贝可能出现的越界问题,引用计数:用来记录资源使用者的个数。在构造时,将资源的计数给成1,每增加一个对象使用该 资源,就给计数增加1,当某个对象被销毁时,先给该计数减1,然后再检查是否需要释放资源, 如果计数为1,说明该对象时资源的最后一个使用者,将该资源释放;否则就不能释放,因为还有 其他对象在使用该资源。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 8:36:50

题解:洛谷 B2066 救援

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来&#xff0c;并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构&#xff0c;旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…

作者头像 李华
网站建设 2026/4/27 8:36:41

【卷卷观察】有图无真相:GPT Image 2之后,我们正在经历什么

有个朋友问我&#xff1a;GPT Image 2出来之后&#xff0c;这个世界会不会彻底乱套&#xff1f;我想了两秒钟&#xff0c;告诉他&#xff1a;不会一夜崩塌&#xff0c;但已经在慢慢烂掉了。他觉得我太悲观。我没跟他争论&#xff0c;因为这两件事同时为真——既不会突然崩溃&am…

作者头像 李华
网站建设 2026/4/27 8:24:42

快速体验Qwen3-VL-8B:纯本地运行,无网络依赖,聊天界面超友好

快速体验Qwen3-VL-8B&#xff1a;纯本地运行&#xff0c;无网络依赖&#xff0c;聊天界面超友好 想不想在本地电脑上&#xff0c;就拥有一个能“看懂”图片、还能跟你聊天的AI助手&#xff1f;不用联网&#xff0c;不用担心隐私&#xff0c;更不用为昂贵的API调用次数付费。 …

作者头像 李华
网站建设 2026/4/27 8:21:37

雁塔区底盘异响松散推荐哪家

在雁塔区开车的朋友们&#xff0c;是否经常被爱车的底盘问题所困扰&#xff1f;底盘咯吱响、过坎咯噔响、打方向咔咔响、跑起来松散晃悠……这些问题不仅严重影响驾驶体验&#xff0c;还可能埋下安全隐患。别再乱修乱换件了&#xff0c;今天就给大家推荐一家靠谱的汽修店——尚…

作者头像 李华
网站建设 2026/4/27 8:19:02

AI智能体记忆系统:Memstate-skill实现持久化、版本化项目上下文管理

1. 项目概述&#xff1a;为AI智能体构建持久化、版本化的记忆系统 在AI智能体&#xff08;Agent&#xff09;的开发与协作中&#xff0c;一个长期存在的痛点是如何让它们拥有稳定、可追溯的“记忆”。无论是Cursor、Cline这类AI编程助手&#xff0c;还是自主运行的自动化Agent…

作者头像 李华
网站建设 2026/4/27 8:17:57

突破百度网盘下载限速:Python解析工具让您30倍加速下载

突破百度网盘下载限速&#xff1a;Python解析工具让您30倍加速下载 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 在数字时代&#xff0c;百度网盘作为国内用户最常用的云存储…

作者头像 李华