C++20: 像Python一样split字符串
概要
Python 的字符串天生支持 split( ) 操作,支持单个字符或字符串作为分隔符。 C++ 在这方面显得很笨拙,但是在 C++20 下经过一番尝试,还是能够提供类似的简洁调用。
Python 代码
s = '0,11,336,23,370'nums = s.split(',')
for n in nums:print(n)print('---')items = s.split('11,')
for i in items:print(i)
基于 C++20 的实现
- 使用了
std::string_view, 避免了原始字符串的拷贝 - 使用了组合,而不是继承的方式,把
split( )函数,与原始的字符串str进行组合,也就是分别作为MyString类的成员函数和数据成员
class MyString {
private:std::string data;public:MyString(const std::string& str) : data(str) {}MyString(std::string&& str) : data(std::move(str)) {}MyString(const char* str) : data(str) {}// 提供 split 方法std::vector<std::string> split(const std::string& delimiter) const {std::vector<std::string> result;size_t start = 0;size_t end = 0;while ((end = data.find(delimiter, start)) != std::string::npos) {result.emplace_back(data.substr(start, end - start));start = end + delimiter.length();}result.emplace_back(data.substr(start)); // 添加最后一部分return result;}// 提供 std::string 的接口const std::string& str() const { return data; }operator const std::string&() const { return data; } // 隐式转换为 std::string
};
调用代码 - C++
int main() {MyString s("0,11,336,23,370");// 按 ',' 分割auto nums = s.split(",");for (const auto& n : nums) {std::cout << n << '\n';}std::cout << "---\n";// 按 "11," 分割auto items = s.split("11,");for (const auto& i : items) {std::cout << i << '\n';}return 0;
}
总结
本文从 Python 简洁的字符串split操作出发,在 C++20 的限定条件下,通过组合 std::string 和 split( ) 函数,以及使用 std::string_view, 实现了类似 Python 的简洁 API 调用。
相关文章:
C++20: 像Python一样split字符串
概要 Python 的字符串天生支持 split( ) 操作,支持单个字符或字符串作为分隔符。 C 在这方面显得很笨拙,但是在 C20 下经过一番尝试,还是能够提供类似的简洁调用。 Python 代码 s 0,11,336,23,370nums s.split(,) for n in nums:print(n…...
Unity3D UI 嵌套滚动视图
Unity3D 解决 UI 嵌套滚动视图滑动问题。 嵌套滚动视图 滑动问题 在游戏开发中,我们常常会遇到一种情况,在一个滚动视图列表中,每个 item 还包含了一个内嵌的滚动视图。 这样,当我们在滑动外层的滚动视图时,如果点…...
你还没有将 Siri 接入GPT对话功能吗?
由于各种原因,国内ios用户目前无缘自带 AI 功能,但是这并不代表国内 ios 无法接入 AI 功能,接下来手把手带你为iPhone siri 接入 gpt 对话功能。 siri 接入 chatGPT 暂时还无法下载 ChatGPT app,或者没有账号的读者可以直接跳到…...
_C#_串口助手_字符串拼接缺失问题(未知原理)
最近使用WPF开发串口助手时,遇到一个很奇怪的问题,无论是主线程、异步还是多线程,当串口接收速度达到0.016s一次以上,就会发生字符串缺失问题并且很卡。而0.016s就一切如常,仿佛0.015s与0.016s是天堑之隔。 同一份代码…...
浅析大数据时代下的网络安全
一、大数据时代下网络安全的现状 在全球化进程不断深入发展的情况下,互联网行业发展速度也更加迅猛,人们对网络信息的需求量不断增加,所以目前已经进入了大数据时代。 随着计算机技术的不断发展,我国互联网网络规模、网民数量、…...
Mysql数据库基础篇笔记
目录 sql语句 DDL——数据库定义语言(定义库,表,字段) 数据库操作: 表操作: DML 增删改语句 DQL 语法编写顺序: 条件查询 DCL 用户管理: 权限管理: 函数 常见字符串内置函…...
rabbitmq原理及命令
目录 一、RabbitMQ原理1、交换机(Exchange)fanoutdirecttopicheaders(很少用到) 2、队列Queue3、Virtual Hosts4、基础对象 二、RabbitMQ的一些基本操作:1、用户管理2、用户角色3、vhost4、开启web管理接口5、批量删除队列 一、Ra…...
React进阶面试题(四)
React 的 reconciliation(协调)算法 Reconciliation是React的diff算法,用于比较更新前后的虚拟DOM树差异,从而使用最小的代价将原始DOM按照新的状态、属性进行更新。其目的是找出两棵树的差异,原生方式直接比较复杂度…...
24/12/1 算法笔记<强化学习> 创建Maze交互
我们今天制作一个栅格的游戏。 我们直接上代码教学。 1.载入库和查找相应的函数版本 import numpy as np import time import sysif sys.version_info.major 2:import Tkinter as tk else:import tkinter as tk 2.设置长宽和单元格大小 UNIT 40 MAZE_H 4 MAZE_W 4 3.初始…...
Linux驱动开发(10):I2C子系统–mpu6050驱动实验
本章我们以板载MPU6050为例讲解i2c驱动程序的编写,本章主要分为五部分内容。 第一部分,i2c基本知识,回忆i2c物理总线和基本通信协议。 第二部分,linux下的i2c驱动框架。 第三部分,i2c总线驱动代码拆解。 第四部分&a…...
《装甲车内气体检测“神器”:上海松柏 K-5S 电化学传感器模组详解》
《装甲车内气体检测“神器”:上海松柏 K-5S 电化学传感器模组详解》 一、引言二、K-5S 电化学传感器模组概述(一)产品简介(二)产品特点(三)产品适用场景 三、电化学传感器原理及优点(一…...
如何将多个JS文件打包成一个JS文件?
文章目录 前言SDK 打包安装 webpack创建 webpack.config.js编译命令行遇到的坑点前言 上一篇已经记录了如何开发一个小游戏聚合SDK,既然是SDK,最终都是给外部人员使用的。调研了一下市面上的前端SDK,最终都是编译成一个 js 文件。我猜理由大概是 js 文件之间的调用都是需要…...
100个python经典面试题详解(新版)
应老粉要求,每晚加餐一个最新面试题 包括Python面试中常见的问题,涵盖列表、元组、字符串插值、比较操作符、装饰器、类与对象、函数调用方式、数据结构操作、序列化、数据处理函数等多个方面。 旨在帮助数据科学家和软件工程师准备面试或提升Python技能。 7、Python面试题…...
C#初阶概念理解
梳理了一些本人在学习C#时的一些生疏点,同时也加深自己的印象。 堆&栈 堆用来存储程序运行时产生的变量,当程序结束时释放; 栈用来存储程序运行时,调用方法产生的临时变量,方法运行完成后就会释放…...
node.js基础学习-url模块-url地址处理(二)
前言 前面我们创建了一个HTTP服务器,如果只是简单的http://localhost:3000/about这种链接我们是可以处理的,但是实际运用中一般链接都会带参数,这样的话如果我们只是简单的判断链接来分配数据,就会报404找不到链接。为了解决这个问…...
算法与数据结构(1)
一:数据结构概论 数据结构分为初阶数据结构(主要由C语言实现)和高阶数据结构(由C实现) 初阶数据结构当中,我们会学到顺序表、链表、栈和队列、二叉树、常见排序算法等内容。 高阶数据结构当中࿰…...
FTP介绍与配置
前言: FTP是用来传送文件的协议。使用FTP实现远程文件传输的同时,还可以保证数据传输的可靠性和高效性。 介绍 FTP的应用 在企业网络中部署一台FTP服务器,将网络设备配置为FTP客户端,则可以使用FTP来备份或更新VRP文件和配置文件…...
SQL面试题——抖音SQL面试题 最近一笔有效订单
最近一笔有效订单 题目背景如下,现有订单表order,包含订单ID,订单时间,下单用户,当前订单是否有效 +---------+----------------------+----------+-----------+ | ord_id | ord_time | user_id | is_valid | +---------+----------------------+--------…...
【线程】Java多线程代码案例(1)
【线程】Java多线程代码案例(1) 一、“单例模式” 的实现1.1“饿汉模式”1.2 “懒汉模式”1.3 线程安全问题 二、“阻塞队列”的实现2.1阻塞队列2.2生产者消费者模型2.3 阻塞队列的实现2.4 再谈生产者消费者模型 一、“单例模式” 的实现 “单例模式”即…...
go使用mysql实现增删改查操作
1、安装MySQL驱动 go get -u github.com/go-sql-driver/mysql2、go连接MySQL import ("database/sql""log"_ "github.com/go-sql-driver/mysql" // 导入 mysql 驱动 )type Users struct {ID intName stringEmail string }var db *sql.DBfu…...
为什么工作越久的精英,最后都放弃了 MBTI?
很多人在职场和生活中遇到瓶颈,第一反应是去测测 MBTI 或者大五人格。 甚至很多大厂在招聘时,也会把这些测试当作金标准。但我观察到一个现象:真正处于决策核心的高净值人群,早就开始放弃这些“自报式”的性格测试了。为什么&…...
采购管理系统:为企业实现降本增效、强化供应链韧性
在数字化浪潮下,采购管理已从传统的成本中心演变为企业的战略职能和价值引擎。选择一款合适的采购管理软件,对于企业实现降本增效、强化供应链韧性、赋能战略决策至关重要。本文将为您盘点市场上主流的五款采购管理软件,深入剖析其核心能力。…...
FPGA实战:增量式编码器信号处理与高精度位置解算
1. 增量式编码器在工业控制中的核心作用 增量式编码器就像工业设备的"眼睛",它能精确捕捉旋转物体的位置和速度信息。在数控机床、机械臂、伺服电机等设备中,编码器的精度直接决定了整个系统的控制质量。我做过一个伺服电机项目,编…...
4吨卧式燃气蒸汽锅炉食品厂洗涤商用
WNS型4吨卧式燃气蒸汽锅炉,专为食品加工、商用洗涤等行业量身打造,是高效稳定、环保节能的核心供汽设备,完美适配食品蒸煮杀菌、洗涤熨烫烘干等高频蒸汽需求,助力企业降本增效、合规生产。 锅炉采用卧式三回程湿背式经典结构&…...
Wan2.2-I2V-A14B企业级落地:API服务压测报告(QPS 3.2,延迟<1.8s)
Wan2.2-I2V-A14B企业级落地:API服务压测报告(QPS 3.2,延迟<1.8s) 1. 测试环境与配置 1.1 硬件配置 GPU:RTX 4090D 24GB显存(专用优化版)CPU:10核心处理器内存:120G…...
Lychee-Rerank与微信小程序结合:打造移动端智能文档搜索工具
Lychee-Rerank与微信小程序结合:打造移动端智能文档搜索工具 你有没有遇到过这种情况?在公司内部的小程序里想查个产品手册或者报销制度,输入关键词后,搜出来的结果要么完全不沾边,要么一大堆文件让你自己翻。明明知道…...
asp毕业设计下载(全套源码+配套论文)——基于asp+access的会员管理系统设计与实现
基于aspaccess的会员管理系统设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于aspaccess的会员管理系统设计与实现,更多精选毕业设计项目实例见文末哦。 文章目录: 基于aspaccess的会员管理系统设计与实现&a…...
Nunchaku FLUX.1-dev效果实测:低光照/夜景/逆光等复杂场景表现
Nunchaku FLUX.1-dev效果实测:低光照/夜景/逆光等复杂场景表现 你是不是也遇到过这样的烦恼?想用AI生成一张夜景照片,结果画面一片死黑,细节全无;或者想创作一张逆光人像,结果人物脸部黑成一团,…...
LED点阵驱动库LEDMatrix:嵌入式硬件时序控制实战指南
1. LEDMatrix 库概述:面向硬件驱动的二维点阵控制框架LEDMatrix 是一个专为嵌入式系统设计的轻量级 C 语言库,核心目标是将抽象的二维布尔数组(bool matrix[rows][cols])高效、可靠地映射至物理 LED 点阵屏。其设计哲学并非通用图…...
2026年智慧景区一体化平台服务商精选指南
一、行业背景与筛选逻辑《2025-2026中国智慧旅游发展报告》显示,2025年国内智慧景区市场规模达326亿元,年复合增长率25.6%。但68%的景区面临系统割裂、会员不通、二次消费偏低的核心痛点,全域旅游平台成为数字化转型关键。本文基于技术实力、…...
