c与c++中的字符串

在c++中,string本质上是一个类;

string与char *有些区别:

  • char*是一个指针;
  • string是一个类,类内封装了char*,管理这一个字符串,是一个char*的容器

在使用string类型时,要加上其头文件

string的初始化操作

string str1;

最直接的初始化,一定要记住;

后面几种了解就ok了

第二种:

const char* c="hello world!";
string str2(c);

用char*来存储,存储的是字符串常量,所以某些编译器需要加上const,为保持习惯,建议加上const

第三种:

const char* c="hello world!";
string str2(c);
string str3(str2);

而在输出字符串的时候可以用字符串变量名+[]来输出,好似跟字符指针输出方式一摸一样

所以我感觉:无论是字符指针还是string类名本质是都是字符串首个元素的地址,类似与数组一样,所以可以利用数组的方式进行输出

其实对于字符串中字符的存取(c++中的字符串)还有一个方法就是调用at接口

string的赋值:

第一种方式:最常用基本

string str;
str="hello world!"
cout<<str<<endl;

后面的了解下就欧克了

//第二种
str2=str1;//第三种
string str3;
str3='a';//第四种
string str4;
str4.assign("hello world");
//感觉调用assign这个接口实在不如等号来的方便//第五种
string str5;
str5.assign("hello world",5);//把前五个字符赋值给str5;

其实还有更多赋值方法,不过很鸡肋,大多用不到,就不多介绍了;

string的拼接:重载+=操作符;append接口

重载+=操作符已经封装在这个类内了,我们只需要调用就欧克了

append接口在这里就不介绍了;

string的查找和替换;

查找:find;替换:rfind;

int find(const string &str,int pos=0) const;查找str第一次出现的位置,从pos开始查找

记住这个是从0开始索引,没有找到返回-1;

rfind与find区别:rfind从右往左查找,但返回的值是从左往右计算;

find从左往右查找,返回的值也是从左往右,

其余该查找和替换的函数的不同参数就不介绍了,因为用不到;

string比较;

比较方式是通过ASCII值进行比较;

>返回1,=返回0;<返回-1;

int compare(const string& str)const;

int compare(const char*s)const;

 string的插入和删除;

插入:string& insert(int pos,const char*s);

string& insert(int pos,const string& str);

删除:string& erase(int pos,int n=pos);

这些函数原型都超级简单,手巧几遍就可以轻松学会;

 string子串;

函数原型:string substr(int pos=0,int n=npos)const;返回由pos开始的n个字符组成的字符串

 

第二个参数可以理解为 从pos初开始的n个字符

 

从下标0开始到第三个字符,就是下标0是第一个字符,下标1是第二个字符,下标2是第三个字符,所以只打印abc 

string的两种输入方式:

先介绍两种输出方式:cin/scanf和两种输出方式cout/printf

scanf和printf是格式化输入输出,输入输出效率高,cin和cout是输入输出流,输入输出效率低

输出流之所以慢,是因为是要先把输出的东西放入缓存区再输出;

对于字符:cin的输入忽略空格和回车,scanf("%c",&i)等价于i=getchar(),空格和回车都会被输入;

下面介绍用cin和scanf输入字符串:

string s1;
cin>>s1;

 cin可以直接输入;

const int 10000
string s1;
s1.resize(N);
scanf("%s",&s1[0]);

用scanf输入就比较麻烦了;首先需要先预先指定s1的大小,然后需要在scanf的参数中取首元素地址;但运行速度是比cin快的;
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/146671.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Cesium创造属于你的地球】相机系统

相机系统里面有setView&#xff0c;flyTo&#xff0c;lookAt&#xff0c;viewBoundingsphere这几种方法&#xff0c;以下是相关的使用方法&#xff0c;学起来&#xff01;&#xff01;&#xff01; setView 该方法可以直接切换相机视口&#xff0c;从而不需要通过一个飞入的效…

uniapp - 微信小程序实现腾讯地图位置标点展示,将指定地点进行标记选点并以一个图片图标展示出来(详细示例源码,一键复制开箱即用)

效果图 在uniapp微信小程序平台端开发,简单快速的实现在地图上进行位置标点功能,使用腾讯地图并进行标点创建和设置(可以自定义标记点的图片)。 你只需要复制代码,改个标记图标和位置即可。

CDH 6.3.2升级Flink到1.17.1版本

CDH&#xff1a;6.3.2 原来的Flink&#xff1a;1.12 要升级的Flink&#xff1a;1.17.1 操作系统&#xff1a;CentOS Linux 7 一、Flink1.17编译 build.sh文件&#xff1a; #!/bin/bash set -x set -e set -vFLINK_URLsed /^FLINK_URL/!d;s/.*// flink-parcel.properties FLI…

好看的货架效果(含3D效果)

搭配thymeleaf layui合成 货架一 1. css #gudinghuojia2F .layui-row { display: flex; justify-content: space-between; height: 100%;} #gudinghuojia2F .layui-col-xs10 {margin-right: 4%;} #gudinghuojia2F .layui-col-xs10:last-child {margin-right: 0;} .inner-ti…

Ubuntu性能分析-ftrace 底层驱动

1、框架介绍 ftrace内核驱动可以分为几部分:ftrace framework,RingBuffer,debugfs,Tracepoint,各种Tracer。 ftrace框架是整个ftrace功能的纽带,包括对内和的修改,Tracer的注册,RingBuffer的控制等等。 RingBuffer是静态动态ftrace的载体。 debugfs则提供了用户空间…

WPS Office for Linux即将面临开源

WPS Office 是一款免费&#xff08;但不开源&#xff09;的办公套件&#xff0c;目前已经在 Windows、macOS、Android、iOS 和 Linux 设备上线&#xff0c;由于在界面和功能上模仿了微软 Office 的部分特性&#xff0c;对于那些轻量办公的用户来说已经能够完全驾驭大部分需求。…

Explain执行计划字段解释说明---ID字段说明

ID字段说明 1、select查询的序列号,包含一组数字&#xff0c;表示查询中执行select子句或操作表的顺序 2、ID的三种情况 &#xff08;1&#xff09;id相同&#xff0c;执行顺序由上至下。 &#xff08;2&#xff09;id不同&#xff0c;如果是子查询&#xff0c;id的序号会…

为什么都说NFS读写性能差,如何进行优化?

使用基于NFS协议存储系统的同学经常遇到的问题是在小文件比较多的情况下性能会比较差。小文件访问性能差本身是可以理解的,但是NFS确实是太差了。不知大家是否深层次分析过,为什么NFS访问小文件性能会这么差? NFS文件系统与本地文件系统的差异在于多了一个网络传输的过程。…

洛谷P5732 【深基5.习7】杨辉三角题解

目录 题目【深基5.习7】杨辉三角题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1传送门 代码解释亲测 题目 【深基5.习7】杨辉三角 题目描述 给出 n ( n ≤ 20 ) n(n\le20) n(n≤20)&#xff0c;输出杨辉三角的前 n n n 行。 如果你不知道什么是杨辉三角&#xf…

【Linux】常用命令总结(简略版)

【Linux】常用命令总结&#xff08;简略版&#xff09; 前言常用快捷键操作&#xff1a; 文件管理1、pwd 显示当前路径2、ls查看目录&#xff08;dir 功能一样&#xff09;3、cd 切换到指定路径4、mkdir 创建一个空目录5、rmdir 删除一个空目录6、rm 删除文件或目录7、touch 创…

算法-排序算法

0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类&#xff1a; 比较类排序&#xff1a;通过比较来决定元素间的相对次序&#xff0c;由于其时间复杂度不能突破O(nlogn)&#xff0c;因此也称为非线性时间比较类排序。 非比较类排序&#xff1a;不通过比较来决定元素间…

归并排序及其非递归实现

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 归并排序递归实现 归并排序非递归实现 归并排序递归实现 图示&#xff1a; 代码&#xff1a; 先分再归并&#xff0c;像是后序一般。 //归并排序 void MergeSort(int* arr, int left, int right) {int* temp (int…

如何开始着手一篇Meta分析 | Meta分析的流程及方法

Meta分析是针对某一科研问题&#xff0c;根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法&#xff0c;对来源不同的研究成果进行收集、合并及定量统计分析的方法&#xff0c;最早出现于“循证医学”&#xff0c;现已广泛应用于农林生态&#xff0c;资源环境等方面。…

管理经济学基本概念(五):一些基本术语

1、理性-行动者范式 使经济学家行动一致的东西就是采用理性-行动者范式来预判人的行为。简单地说&#xff0c;这个范式认为人们的行动式理性的、优化的和自利的。 2、税后净营业利润 税后经营净利润(NOPAT)是指将公司不包括利息收支的营业利润扣除实付所得税税金之后的数额加…

国庆10.01

TCPselect 代码 服务器 #include<myhead.h> #include<sqlite3.h> #define PORT 6666 //端口号 #define IP "192.168.0.104" //IP地址//键盘事件 int jp(fd_set tempfds,int maxfd) {char buf[128] ""; //用来接收数据char buf1[128] …

力扣:117. 填充每个节点的下一个右侧节点指针 II(Python3)

题目&#xff1a; 给定一个二叉树&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 next 指针设置为 NULL 。 初始状态下&#xff0c;所…

1、【开始】【简介】Qlib:量化平台

【简介】1、Qlib:量化平台 简介框架简介 Qlib是一个面向AI的量化投资平台,旨在实现AI技术在量化投资中的潜力,赋能研究,并创造价值。 通过Qlib,用户可以轻松利用他们的想法来创建更好的量化投资策略。 框架 在模块层,Qlib 是由上述组件组成的平台。这些组件被设计为低耦…

如何保持终身学习

文章目录 2.1. 了解你的大脑2.2 学习是对神经元网络的塑造2.3 大脑的一生 3.学习的心里基础3.1 固定思维与成长思维3.2 我们为什么要学习 4. 学习路径4.1 构建知识模块4.2 大脑是如何使用注意力的4.3 提高专注力4.4 放松一下&#xff0c;学的更好4.5 巩固你的学习痕迹4.6 被动学…

Vue3快速入门

简介 什么是Vue Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单还是复杂的界面&…

newstarctf

wp web: 1.rce 可以发现这个变量名有下划线也有点。 $code$_POST[e_v.a.l]; 这时候如果直接按这个变量名来传参&#xff0c;php 是无法接收到这个值的&#xff0c;具体原因是 php 会自动把一些不合法的字符转化为下划线&#xff08;注&#xff1a;php8以下&#xff09;&am…