(C++)STL:string类(三)非成员重载函数和类型转化函数解析使用

article/2025/7/28 13:55:23

string类(三)

  • 非成员重载函数
    • relational operaters 关系运算符
    • operator+
    • operator<< operator>>
    • getline
  • <string>头文件内的函数
    • string转化为数字类型
    • 其他数值类型转化为string
    • 练习:字符串最后一个单词的长度

非成员重载函数

在这里插入图片描述

relational operaters 关系运算符

不重载为成员函数是为了让左操作数不受类的对象的类型限制
即左操作数是非当前重载类的类型只有重载为全局函数才能实现
在这里插入图片描述
以==为例

string s1("aaa"),s2("bbb");
const char* str="xxxxx";

三个重载是为了同时支持

s1==str;
str==s1;
s1==s2;

实际上只有第一个重载也支持这三种比较,因为单参数构造编译器支持隐式类型转化

operator+

在这里插入图片描述

void stringtest12() {string s1("aaa"), s2("bbb");cout << s1 << endl;cout << s2 << endl;const char* str = "xxxxx";cout << str << endl;string s3, s4;s3 = s1 + s2;cout << s3 << endl;s4 = s1 + str;cout << s4 << endl;
}

在这里插入图片描述

operator<< operator>>

在这里插入图片描述

注意:在cin>>中,空格和换行默认是是多项输入值之间的分隔——以空格和换行作为输入结束的标志
会导致的问题:无法一次性读取含空格的字符串

void stringtest13() {string s1, s2;cin >> s1 >> s2;cout << s1 << endl;cout << s2 << endl;
}

在这里插入图片描述

解决方案如下:

getline

可以自定义结束输入的标志字符(delim)
cin是istream类型的对象,所以一般作为getline的第一个参数
如果要读取空格或换行进入string,使用getline
在这里插入图片描述

void stringtest14() {string s1, s2;//以换行符作为结束标志,能读取空格getline(cin, s1);cout << "s1=" << s1 << endl;//以'#'作为结束标志,能读取换行符存储为'\n'getline(cin, s2, '#');cout <<"s2="<< s2 << endl;
}

在这里插入图片描述

头文件内的函数

string转化为数字类型

i int
u unsigned
l long
f flout
d double
在这里插入图片描述
在这里插入图片描述
分析参数:
str:string类型对象
idx:一个size_t类型指针,默认为NULL(idx=0)
idx 参数的主要作用是帮助了解字符串中哪些部分被成功转换为整数,哪些部分没有被转换。如果转换过程中遇到无法解析为整数的字符,idx会指向第一个无法解析的字符的位置。
base:转换后数字的进制,默认为十进制(base=10)

void stringtest15() {string s1("2025");int n1=stoi(s1);cout << n1<<endl;//转化为8进制形式int n2=stoi(s1,nullptr,8);cout << n2 << endl;string s2("2025y23");//传这种无法完全转换的字符串给stoi也不会报错size_t idx = 0;//定义一个idx可以在stoi中记录到第一个出现无法转换为整型的字符的位置// 如果不需要记录就传nullptr即可int n3 = stoi(s1, &idx, 10);cout << n3 << endl;cout << s2.substr(idx) << endl;//发现输出了无法转换的y之后的内容,证实了之前说明的idx的功能
}

在这里插入图片描述

其他数值类型转化为string

(数值类型有什么参照上一点string可以转化成什么数值类型)
在这里插入图片描述
在这里插入图片描述
注意的点:由于浮点型可能无法精确存储,所以有时会出现一点偏差
浮点值二进制表示的不精确性:

  1. 浮点数在计算机中以二进制形式存储,而某些十进制小数无法精确表示为二进制小数。因此,即使原始值是 0.1,在计算机中存储时可能已经变成了一个非常接近但不完全等于 0.1 的值。
  2. 默认精度:std::to_string 在转换浮点数时会使用默认的精度(通常是 6 位小数),但这可能不足以精确表示某些浮点数的值。

代码示例

void stringtest16() {int n = 2025;double num = 0.025;string s1 = to_string(n);string s2 = to_string(3.1415926);cout << s1 << endl;cout << s2 << endl;
}

在这里插入图片描述

练习:字符串最后一个单词的长度

https://www.nowcoder.com/practice/8c949ea5f36f422594b306a2300315da?tpId=37&&tqId=21224&rp=5&ru=/activity/oj&qru=/ta/huawei/question-ranking
在这里插入图片描述
关键点:使用getline读取含空格的字符串
其他类似于之前的提取后缀

#include<iostream>
#include<string>
using namespace std;
int main()
{string line;// 不要使用cin>>line,因为会它遇到空格就结束了// while(cin>>line)while(getline(cin, line)){size_t pos = line.rfind(' ');//最后一个反着找cout<<line.size()-pos-1<<endl;}return 0;
}

http://www.hkcw.cn/article/QJKcDqXwrK.shtml

相关文章

[Python] Python运维:系统性能信息模块psutil和系统批量运维管理器paramiko

初次学习&#xff0c;如有错误还请指正 目录 系统性能信息模块psutil 获取系统性能信息 CPU信息 内存信息 磁盘信息 网络信息 其他信息 进程信息 实用的IP地址处理模块IPy IP地址、网段的基本处理 多网络计算方法 系统批量运维管理器paramiko paramiko 的安装 Li…

声光控灯电路Multisim仿真

5V交流源充当声音信号源&#xff0c;可调电阻充当光敏电阻。 白天&#xff0c;不管是否有声音&#xff0c;灯都不会亮。 夜晚&#xff0c;当有声音时&#xff0c;灯亮一段时间&#xff0c;然后熄灭。 仿真时遇到的问题&#xff1a; 问题1、必须按照一定的流程才能正常运行。…

Blueprints - List View Widget

一些学习笔记归档&#xff1b; 需要读取动态数据把多个条目显示在UI上的时候&#xff0c;可能用到List View组件&#xff1b;假如有Widget要使用在List View中&#xff0c;此Widget需要继承相关接口&#xff1a; 这样就能在List View控件中选择已经继承接口的Widget组件了&…

七.MySQL内置函数

1.日期函数 MySQL 日期与时间函数对照表 函数名称描述current_date()当前日期&#xff08;格式&#xff1a;YYYY-MM-DD&#xff09;current_time()当前时间&#xff08;格式&#xff1a;HH:MM:SS&#xff09;current_timestamp()当前日期和时间&#xff08;等同于 now()&#x…

神经网络与Transformer详解

1. 一个模型的典型场景 对用户咨询的法律问题做自动归类: 婚姻纠纷、劳动纠纷、合同纠纷、债权债务、房产纠纷、交通事故、医疗纠纷、版权纠纷 2. 模型就是一个数学公式 我们一般将这样的问题描述为:给定一组输入数据,经过一系列数学公式计算后,输出n个概率,分别代表该…

《Python基础》第2期:环境搭建

在开始编写 Python 代码前&#xff0c;还需要搭建 Python 的开发环境。 电脑是没办法直接读懂 Python 代码的&#xff0c;而是需要一个解释器&#xff0c;实时把代码翻译成字节码&#xff0c;字节码再转换成 0 和 1&#xff0c;电脑就能读懂了。 Python 的运行过程就是翻译一行…

多线程——定时任务ScheduledThreadPoolExecutor用法

创建 同样是用Executors工具类&#xff1a; 创建定时任务线程池 还有一个重载方法 接收一个额外的参数&#xff1a;线程工厂 创建单个定时任务执行器&#xff1a; 重载&#xff1a;也接收一个线程工厂 区别说明 singleThread&#xff1a; 这里可以new, 说明他是一个类 传…

AI 代理框架:使用正确的工具构建更智能的系统

AI 代理框架&#xff1a;使用正确的工具构建更智能的系统 探索 AI 代理框架如何支持从单代理设置到复杂的多代理编排的自主工作流。了解它们有何不同、何时使用它们以及如何开始使用实际工具。 AI 代理框架 从本质上讲&#xff0c;AI 代理是可以感知、计划和行动的程序。它们旨…

计算机网络 TCP篇常见面试题总结

目录 TCP 的三次握手与四次挥手详解 1. 三次握手&#xff08;Three-Way Handshake&#xff09; 2. 四次挥手&#xff08;Four-Way Handshake&#xff09; TCP 为什么可靠&#xff1f; 1. 序列号与确认应答&#xff08;ACK&#xff09; 2. 超时重传&#xff08;Retransmis…

系统架构设计师(一):计算机系统基础知识

系统架构设计师&#xff08;一&#xff09;&#xff1a;计算机系统基础知识 引言计算机系统概述计算机硬件处理器处理器指令集常见处理器 存储器总线总线性能指标总线分类按照总线在计算机中所处的位置划分按照连接方式分类按照功能分类 接口接口分类 计算机软件文件系统文件类…

软件无线电关键技术之正交调制技术

与传统调制方式相比&#xff0c;IQ 调制不直接对相位或频率调制&#xff0c;而是简单的对载波及其正交量进行线性调制&#xff0c;进而达到相位或频率调制的效果。IQ 调制具有较高的数据传输速率&#xff0c;高频带利用率&#xff0c;可有效抑制镜频边带以及易于实现等优势&…

comfyui利用 SkyReels-V2直接生成长视频本地部署问题总结 1

在通过桌面版comfyUI 安装ComfyUI-WanVideoWrapper 进行SkyReels-V2 生成长视频的过程中&#xff0c;出现了&#xff0c;很多错误。 总结一下&#xff0c;让大家少走点弯路 下面是基于搜索结果的 ComfyUI 本地部署 SkyReels-V2 实现长视频生成的完整指南&#xff0c;涵盖环境配…

性能优化 - 案例篇:缓存

文章目录 Pre引言1. 缓存基本概念2. Guava 的 LoadingCache2.1 引入依赖与初始化2.2 手动 put 与自动加载&#xff08;CacheLoader&#xff09;2.2.1 示例代码 2.3 缓存移除与监听&#xff08;invalidate removalListener&#xff09; 3. 缓存回收策略3.1 基于容量的回收&…

高速串行通信解惑说明

什么是逗号检测&#xff1f; 逗号检测&#xff0c;就是gt在发送数据的时候&#xff0c;一直在发送。这个时候使用一个标识符将数据隔开&#xff0c;用来对齐数据。&#xff08;类似人说明的停顿或者写文章中的标点符号&#xff09;逗号的两个作用&#xff0c;一个是将数据包隔…

724.寻找数组的中心下标前缀和

题目链接&#xff1a; https://leetcode.cn/problems/find-pivot-index/ 这道题目我们可以使用暴力解法&#xff0c;就一个下标前数组之和&#xff0c;再求一个下标后数组之和&#xff0c;时间复杂度达到n方&#xff0c;我们来写一下&#xff1a; int pivotIndex(vector<in…

Python----目标检测(《SSD: Single Shot MultiBox Detector》论文和SSD的原理与网络结构)

一、SSD&#xff1a;单次多框检测器 1.1、基本信息 标题&#xff1a;SSD: Single Shot MultiBox Detector 作者&#xff1a;Wei Liu (UNC Chapel Hill), Dragomir Anguelov (Zoox Inc.), Dumitru Erhan, Christian Szegedy (Google Inc.), Scott Reed (University of Michiga…

[Windows]在Win上安装bash和zsh - 一个脚本搞定

目录 前言安装步骤配置要求下载安装脚本启动程序 前言 Windows是一个很流行的系统, 但是在Windows上安装bash和zsh一直是一个让人头疼的问题. 本蛙特意打包了一个程序, 用于一站式解决这一类的问题. 安装步骤 配置要求 系统: Windows软件: Powershell 5.1或以上 下载安装…

从0开始学习R语言--Day13--混合效应与生存分析

混合效应模型&#xff08;Mixed Effects Model&#xff09; 对于数据来说&#xff0c;我们通常把所有样本共有的影响因素&#xff08;性别&#xff0c;实验处理&#xff0c;实验方法&#xff09;&#xff0c;这种可以推广到总体的叫做固有效应&#xff0c;而仅适用于特定分组的…

【前端】javascript和Vue面试八股

面试暂时没有遇到过考这么深的&#xff0c;一般还是问一些生命周期和性能相关。 Q&#xff1a;什么情况下“ a 1 && a 2 && a 3 ”同时成立 A&#xff1a;对象的valueOf与toString方法&#xff1a;当一个对象与一个原始值&#xff08;如数字&#xff09;进…

某航后缀混淆逆向与顶像风控分析

文章目录 1. 写在前面2. 接口分析3. 加密分析4. 风控分析 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致…