C++中std::string的=,+,+=使用过程中的问题
1. 调用构造函数时的=运算符不支持int,char类型的操作数
string str1 = 'a'; //error
这是一个构造函数。C++中string是一个类,内部封装了char *来管理这个字符串。
string的构造函数:
- string() // 创建一个空的字符串
- string(const char * s) // 使用字符串s初始化
- string(const string& s) // 使用一个string对象初始化另一个string对象
- string(int n ,char c) // 使用n个字符c初始化(该字符串由n个字符c组成)
所以在初始化的时候没有char类型,所以error
2. 调用赋值运算函数时的=运算符支持int,char类型的操作数
string str = "aaa";str = 'a'; //ok
这是一个赋值操作,把字符a赋值给当前的字符串,正确
3. 使用+和+=运算符
string s1="abc" +"de"; // error
原因:
- 两个string能相加,是因为string类把运算符+和+=都重载过,+和+=是string的重载函数。也可以把string和字符串常量相加,但必须保证每个加法运算符(+)的两侧的运算对象至少有一个是string。
- 上面例子中的"abc"、"de"都是字符串常量,char是数据的基本类型,不是类,更没有重载过+和+=运算符,是没办法用加号直接相加的,所以会报错。
string s1;
s1=s1+"abc"+"de"; // ok
s1+="abc"+"de"; // error
原因:
- s1=s1+"abc"+"de"是对的。前面提到,把string和字符串常量相加,但必须保证每个加法运算符(+)的两侧的运算对象至少有一个是string。s1+"abc"+"de"按照加号从左向右结合的顺序,会先让s1+“abc”,再让这个结果加上"de",然后把这个结果赋给s1。是正确的
- s1+="abc"+"de"错了。因为要先得到+=右边的内容,也就是进行"abc"+"de",字符串常量,没有办法直接相加,原因如上。
string str = "aaa";
str += 'a'; //ok
+= 字符串拼接 支持char类型
string s1="abcde";
string s2;
s2+=s1[0]+s1[1]+s1[2]; // error
s2=s2+s1[0]+s1[1]+s1[2]; // ok
原因:
- s1[n]返回的是s1的第n个字符的引用,是char类型,+=要先得到等号右边的内容,即进行s1[0]+s1[1]+s1[2],但char是不能直接相加的(几个char直接相加编译器会将它们对应的ASCII码相加,得到一个int型的数,得不到你想要的字符串拼接的效果),所以错误,改成s2=s2+s1[0]+s1[1]+s1[2];是ok的。
相关文章:
C++中std::string的=,+,+=使用过程中的问题
1. 调用构造函数时的运算符不支持int,char类型的操作数 string str1 a; //error 这是一个构造函数。C中string是一个类,内部封装了char *来管理这个字符串。 string的构造函数: string() // 创建一个空的字符串string(const char * s)…...
ruoyi-plus使用Statistic统计组件升级element-plus
原本使用的就是gitee上lionli的ruoyi-plus版本的代码。但是在使用过程中作首页数据看板时想使用elementui的Statistic统计组件。结果在浏览器控制台报错找不到组件el-statistic 于是查看elementui的历史版本,发现是在新版中才有这个组件,旧版本是没这个组…...
Python基础入门例程72-NP72 生成字典(字典)
最近的博文: Python基础入门例程71-NP71 喜欢的颜色(字典)-CSDN博客 Python基础入门例程70-NP70 首都(字典)-CSDN博客 Python基础入门例程69-NP69 姓名与学号(字典)-CSDN博客 目录 最近的博文: 描述...
flink的java.lang.IllegalStateException: Buffer pool is destroyed 异常
背景 最近flink的在线应用出现错误java.lang.IllegalStateException: Buffer pool is destroyed,本文记录下这个错误的原因 错误原因 详细的日志堆栈如下: Caused by: java.lang.IllegalStateException: Buffer pool is destroyed. at org.apache.flink.runtime…...
物联网AI MicroPython学习之语法 实时时钟RTC
学物联网,来万物简单IoT物联网!! RTC 介绍 模块功能: 实时时钟RTC驱动模块 接口说明 RTC - 构建RTC对象 函数原型:RTC()参数说明: 无 返回值: 构建的RTC对象。 datetime - RTC时钟操作 函数原型&a…...
GEE:kNN(k-最近邻)分类教程(样本制作、特征添加、训练、精度、最优参数、统计面积)
作者:CSDN @ _养乐多_ 本文将介绍在Google Earth Engine (GEE)平台上进行kNN(k-最近邻)分类的方法和代码,其中包括制作样本点教程(本地、在线和本地在线混合制作样本点,合并样本点等),加入特征变量(各种指数、纹理特征、时间序列特征、物候特征等),运行kNN(k-最近…...
【GitHub】保姆级使用教程
一、如何流畅访问GitHub 1、网易uu加速器 输入网址,无脑下载网易加速器;https://uu.163.com/ 下载安装完毕后,创建账号进行登录 登录后,在右上角搜索框中搜索“学术资源”,并点击; 稍等一会儿就会跳…...
Kotlin基础——Lambda和函数式编程
Lambda 使用 { } 定义Lamba,调用run运行 run { println(1) }更常用的为 { 参数 -> 操作 },还可以存储到变量中,把变量作为普通函数对待 val sum { x: Int, y: Int -> x y } println(sum(1, 2))maxBy()接收一个Lambda,传…...
mysql忘记密码,然后重置
数据库版本8.0.26 只针对以下情况 mysql忘记了密码,但是你navicat之前连接上了 解决方法: 第一步,选中mysql这个数据库,点击新建查询 第二步:重置密码 alter user rootlocalhost IDENTIFIED BY 你的密码; 然后就可…...
linux centos系统命令安装
Zip unzip 命令安装下载 centos 命令常用常用下载 https://rpmfind.net/linux/rpm2html/search.php?queryzip%28x86-64%29&submitSearch…&system&arch 在线安装zip命令 Centos用yum安装的话用下面的命令安装 yum install -y unzip zipUbuntu的的系统可以用下…...
基于springboot实现高校食堂移动预约点餐系统【项目源码】计算机毕业设计
基于springboot实现高校食堂移动预约点餐系统演示 Java语言简介 Java是由SUN公司推出,该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称,也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备…...
栈和队列OJ题目——C语言
目录 LeetCode 20、有效的括号 题目描述: 思路解析: 解题代码: 通过代码: LeetCode 225、用队列实现栈 题目描述: 思路解析: 解题代码: 通过代码: LeetCode 232、用栈…...
System-V共享内存和基于管道通信实现的进程池
文章目录 一.进程间通信:进程间通信的本质: 二.Linux管道通信匿名管道:关于管道通信的要点:基于匿名管道构建进程池: 三.System-V共享内存共享内存和命名管道协同通信 参考Linux内核源码版本------linux-2.4.3 一.进程间通信: 操作系统中,为了保证安全性,进程之间具有严格的独…...
Python武器库开发-前端篇之CSS基本语法(三十)
前端篇之CSS基本语法(三十) CSS简介 CSS(层叠样式表)是一种用于描述网页外观和布局的样式表语言。它与 HTML 一起,帮助开发者对网页进行美化和布局。CSS通过定义网页元素的颜色、字体、大小、背景、边框等属性,使网页变得更加美…...
微信小程序实现类似Vue中的computed、watch功能
微信小程序实现类似Vue中的computed、watch功能 构建npm使用 构建npm 创建包管理器 进入小程序后,打开终端,点击顶部“视图” - “终端” 新建终端 使用 npm init -y初始化包管理器,生成一个package.json文件 安装 npm 包 npm install --…...
[JVM] 美团二面,说一下JVM数据区域
Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。这些区域有不同的用途。 文章目录 线程私有的数据区域1. 程序计数器2. Java 虚拟机栈3. 本地方法栈 线程共享的数据区域1. Java 堆2. 方法区3. 运行时常量池4. 直接内存 线程私有的数据区域 …...
【React】useReducer
让 React 管理多个相对关联的状态数据 import { useReducer } from "react" // 1. 定义reducer函数,根据不同的action返回不同的状态 function reducer(state, action) {switch (action.type) {case ADD:return state action.payloadcase SUB:return st…...
leetcode刷题详解二
160. 相交链表 本质上是走过自己的路,再走过对方的路,这是求两个链表相交的方法 ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {//本质上是走过自己的路,再走过对方的路if(headA NULL|| headB NULL){return NULL;}Lis…...
利用opencv/暗通道方法检测图像是否有雾-利用opencv/暗通道方法对深度学习目标检测算法结果进行二次识别提高准确率
目录 1 Python版本 2 C++版本 本来利用yolov5检测浓雾的,但是发现yolov5的检测结果会把一些正常天气检测成雾天,这种时候其实可以通过增加正常类,也就是将正常天气被误检成浓雾的图片当成一个正常类别去训练,但是不想标注图片,也不想重新训练算法了,因此想是不是可以用…...
Java 25虚拟线程上线即崩?3个被90%团队忽略的JVM调优临界点及紧急修复指南
第一章:Java 25虚拟线程上线即崩?真相溯源与架构定位Java 25正式引入的虚拟线程(Virtual Threads)并非“上线即崩”,而是因运行时环境错配、监控工具误判及传统阻塞式代码未适配引发的表象性崩溃。根本原因在于JVM在Pr…...
Unity网络开发革命:Netcode for GameObjects完整入门指南
Unity网络开发革命:Netcode for GameObjects完整入门指南 【免费下载链接】com.unity.netcode.gameobjects Netcode for GameObjects is a high-level netcode SDK that provides networking capabilities to GameObject/MonoBehaviour workflows within Unity and …...
如何快速安装Android Studio中文语言包:终极完整指南
如何快速安装Android Studio中文语言包:终极完整指南 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack Android Studio中…...
Cherry Studio 接入 GLM-5.1 教程|Cherry Studio 配置 GLM 模型方法
Cherry Studio 接入 GLM-5.1 教程|Cherry Studio 配置 GLM 模型方法 SEO关键词:Cherry Studio教程、Cherry Studio配置大模型、GLM-5.1使用方法、GLM模型接入、Cherry Studio配置API Key、GLM Coding Plan 前段时间在折腾本地 AI 工具时,一…...
老队员的建议:怨天不由人,收获在自己
简 介: 【】一位往届选手针对智能车竞赛自制车模争议提出建议:1)反对因自制车模被超越而要求改规则的行为,认为应通过提升设计水平公平竞争;2)强调比赛"立足培养"的宗旨应兼顾基础薄弱学生&#…...
用增量学习对抗‘遗忘’:在TE过程数据集上复现论文《Fault diagnosis of TE process based on incremental learning》
增量学习在TE过程故障诊断中的实战应用:从数据预处理到模型对抗遗忘 TE过程(Tennessee Eastman process)作为化工领域的经典仿真数据集,长期以来为故障诊断算法提供了标准测试平台。当我们将目光投向工业场景中的真实需求时&#…...
imFile下载管理器:从零开始构建你的高效下载工作流
imFile下载管理器:从零开始构建你的高效下载工作流 【免费下载链接】imfile-desktop A full-featured download manager. 项目地址: https://gitcode.com/gh_mirrors/im/imfile-desktop 还记得那些焦急等待大文件下载的夜晚吗?当浏览器下载器卡在…...
Python无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称解决方案
前言 今天在给一个同学远程部署项目的时候,在使用 pip 下载项目所需要的模块时,出现了如下问题: pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 请检查名称的拼写,如果包括路径,请确保路径…...
终极GMod修复工具:5分钟解决Garry‘s Mod浏览器乱码与启动故障
终极GMod修复工具:5分钟解决Garrys Mod浏览器乱码与启动故障 【免费下载链接】GModPatchTool 🇬🩹🛠 Patches for Garrys Mod. Updates/Improves CEF and Fixes common launch/performance issues (esp. on Linux/Proton/macOS). …...
STM32F103驱动维特智能JY61P六轴传感器:从USB-TTL调试到按键唤醒的完整避坑指南
STM32F103驱动维特智能JY61P六轴传感器:从硬件调试到数据解析的全流程实战 在嵌入式开发领域,姿态传感器正逐渐成为各类智能设备的标配组件。维特智能JY61P作为一款性价比较高的六轴姿态传感器,集成了三轴加速度计和三轴陀螺仪,能…...
