C++如何切割String对象

2023-11-17

C++如何切割String对象

C++相较于Java,Python 并没有提供的字符串分割的函数split,因此需要自己进行编写。在实际的工作中这一功能会被经常使用,所以进行简单的记录一下。

核心函数

代码实现的函数是调用String库中的find函数和substr函数。

find函数

size_type find(const basic_string &str,size_type pos=0)

find函数完成最简单的搜索,它查找参数指定的字符串(str),若找到返回一个String::size_type的值,用来表示匹配发生位置的下标。若未找到,则返回一个名为string::npos的static成员。C++标准库将npos定义为一个const string ::size_type类型,并初始化值为-1。由于npos是一个unsigned类型,此初值意味着npos等于任何string最大的可能大小。

参数str,pos表示从pos位置中开始查找str

除了find 操作,string还支持以下的操作

  1. str.find(args) 查找str中args第一次出现的位置
  2. str.rfind(args) 查找str中args最后一次出现的位置
  3. str.find_first_of(args) 查找str中args中第一个字符第一次出现的位置
  4. str.find_last_of(args) 查找str中args中第一个字符最后一次出现的位置
  5. str.find_first_not_of(args) 查找str中args中第一个不在atgs中的字符
  6. str.find_last_not_of(args) 查找str中args中最后一个不在atgs中的字符

substr函数

string substr(size_type pos=0,size_type count=npos)

substr主要功能是复制字符串,要求从指定的位置pos开始,并具有指定的长度count。若未指定长度或者pos+count>源字符串的长度,则子字符串将延续到源字符串的结尾

数值转换

由于本次样例中需要将string类型转换为int类型,我们简单介绍以下常见的string的数值转换

int转换成string
int i=42;
string s=to_string(i);
string 转换成int
string str='42';
stoi(str);

输入样例

nums = [3,2,4], target = 6

输出样式

3 2 4 
6

代码实现

#include<iostream>
#include<vector>
#include<string>
using namespace std;

void spiltStr(string str,const string & split,vector<string>&strlist)
{
    strlist.clear();
    if(str=="")
        return;
    string strs=str+split;
    size_t pos=strs.find(split);
    int steps=split.size();

    while(pos!=strs.npos)
    {
        //substr 复制字符串,起始位置,复制字符数目
        string temp=strs.substr(0,pos);
        strlist.push_back(temp);
        strs=strs.substr(pos+steps,strs.size());
        pos=strs.find(split);
    }

}



int main()
{
    vector<int>num;
    vector<string>strlist;
    string inputStr;
    string tempStr;
    int target;

    getline(cin,inputStr);
    if(inputStr=="")
    {
        return 0;
    }

    //分割输入的字符串
    spiltStr(inputStr,"[",strlist);
    spiltStr(strlist[1],"]",strlist);
    spiltStr(strlist[0],",",strlist);

    //将vector<string>spiltStr的数值写入vector<int>nums中
    for(auto i:strlist)
    {
        num.push_back(stoi(i));
    }

    spiltStr(inputStr,"=",strlist);

    // spiltStr(strlist.back(),"=",strlist);
    target=stoi(strlist.back());


    for(auto i:num)
    {
        cout<<i<<" ";
    }
    cout<<endl;
    cout<<target<<endl;
    

}

例程演示

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++如何切割String对象 的相关文章

随机推荐

  • uniapp封装request函数 实现唯一登录,一个账号同时只能登陆一个设备

    今天有空 所以又来总结自己的工作啦 今天写如何封装request请求并且 在每个请求这里通过设置token实现唯一登录的问题 一个账号同一时间只能登陆一个账号 先上封装的request代码啦 这个是借鉴网上的资料写的 我会把博主的链接放在本
  • 输入一行字符,分别统计出其数字、大写字母、小写字母和其他字符的个数。

    Ptw cwl 输入一行字符 分别统计出其数字 大写字母 小写字母和其他字符的个数 提示 比如 输入 lwlr abz456 Wb 一行字符是你编写方法的参数 输入一行字符 分别统计出其数字 大写字母 小写字母和其他字符的个数 public
  • windows使用小技巧 ━━ Windows 10 HEVC扩展要收费怎么办?教你怎么免费下载HEVC扩展

    现在最新的方法 Download K Lite Codec Pack Full 可以无视下面的内容 平时我一般都使用potplayer打开视频 但在整理视频的时候mov格式的文件总是不能显示缩略图 如果用windows10自带图片查看器打开
  • 2013-2020年全国31省数字经济数据集

    1 时间 2013 2020年 2 来源 整理自国家统计J和统计NJ 3 指标包括 信息化基础 光缆线路长度 公里 移动电话基站 万个 信息传输 软件和信息技术服务业城镇单位就业人员 万人 年末常住人口 万人 城镇单位就业人员 万人 光缆密
  • AcWing 1247. 后缀表达式

    老师的讲课网址 https www acwing com video 736 第二个图就已经告诉我们只要有一个减号 我们就可以组成至少含一个减号的所有组合 比如说一个减号三个加号我们可以组合成 1 2 3 4 所以代码如下 include
  • The 2022 ICPC Asia Xian Regional Contest--G. Perfect Word

    You are given nn strings and required to find the length of the longest perfect word A string t is called a perfect word
  • caffe: test code 执行出问题: Check failed: FLAGS_weights.size() > 0 (0 vs. 0) Need model weights to score...

    Check failed FLAGS weights size gt 0 0 vs 0 Need model weights to score 出现这个错误 但是我记得昨天还好好的 网上搜了也没有答案 后来仔细检查才发现 原来存放 caff
  • QT5.9.4 + opencv3.0.0编译配置

    QT5 9 4 opencv3 0 0编译配置 1 安装QT5 9 4 QT下载地址 http download qt io archive qt 安装完毕之后将以下目录加入到系统环境变量 E Qt Qt5 9 4 5 9 4 mingw5
  • windows系统pycharm安装,opencv安装,anaconda安装

    1 python IDE安装 3 9 https www python org getit 2 pycharm安装 社区版最新 https www jetbrains com pycharm 3 anaconda3安装 https www
  • Electron 自定义 Dock 图标

    转载自https cloud tencent com developer article 1650700 学透 Electron 自定义 Dock 图标 Mac OS 做为前端开发者的首选操作系统相信大家再熟悉不过了 在电脑主界面的底部可以
  • epoll在多线程中的应用-EPOLLEXCLUSIVE和REUSEPORT(一)

    以下均为对epoll在多线程中的使用的一些笔记 如果有不对的地方 烦请指出 主要对于我所遇到的问题进行讨论 不会讨论代码如何改写 探讨如何解决这个问题 一 引言 这些问题均是我在编写我的Web服务器遇到的 我在编写多线程Web服务器的时候
  • Docker 镜像库国内加速的几种方法

    概述 在国内 拉取 Docker 镜像速度慢 时不时断线 无账号导致限流等 比较痛苦 这里提供加速 优化的几种方法 梳理一下 会碰到以下情况 国内下载速度慢 时不时断线 是因为网络被限制了 没有公共镜像库账号导致限流 是因为 Docker
  • 「网页开发|前端开发|Vue」01 快速入门:快速写一个Vue的HelloWorld项目

    本文主要介绍如何用vue开发的标准化工具vue cli快速搭建一个符合实际业务项目结构的hello world网页项目并理解vue的代码文件结构以及页面渲染流程 文章目录 一 准备工作 安装node js 二 项目搭建 创建项目目录 全局安
  • 谁来教我渗透测试——黑客应该掌握的Windows基础

    今天我们看看作为一个黑客对于Windows应该掌握哪些基础知识 主要内容包含以下四个方面 系统目录 服务 端口和注册表 黑客常用的DOS命令及批处理文件的编写 黑客常用的快捷键 以及如何优化系统 登录密码破解 手动清除木马病毒 系统目录 服
  • 2014年总结

    总结的意义在于认清未来的方向 2014年工作 1 ETL Data Warehouse Data Mining 数据挖掘内容很多 如何与企业需求相结合是重点 2 简单的工作流系统开发 3 体会ArgGIS在物流运输企业中的应用 无论云计算以
  • 色彩空间与像素格式

    转载来自 https www cnblogs com leisure chn p 10290575 html 1 色彩空间基础 颜色是不同波长的光对人眼刺激产生的色彩感觉 色彩空间 Color Space 是颜色的数学表示 根据不同的表示方
  • PSO优化LSTM

    有两个py文件 PSO 1和LSTM 1 在资源那里下载 有数据 环境 python TF2 优化的参数有 神隐藏神经元个数 dropout比率 batch size 这个可以根据自己的意愿改 规定上限和下限 UP 64 0 14 32 D
  • java跨时区问题【相差8小时】

    情况一 后端传递给前端 前端展示到页面中的时间与系统时间相差8小时 解决方法 在该类的日期属性字段上加上注解 JsonFormat pattern yyyy MM dd HH mm ss timezone GMT 8 情况二 展示数据时间与
  • 解决Chrome, NET::ERR_CERT_AUTHORITY_INVALID

    文章目录 前言 解决方法一 解决方法二 总结 前言 解决方法一 首先清理一下缓存 三个点 gt 设置 gt 清除浏览数据 即可 如果还解决不了 因为Chrome是默认使用HSTS传输 严格的http传输方式 解决方法二 在Chrome浏览框
  • C++如何切割String对象

    C 如何切割String对象 C 相较于Java Python 并没有提供的字符串分割的函数split 因此需要自己进行编写 在实际的工作中这一功能会被经常使用 所以进行简单的记录一下 核心函数 代码实现的函数是调用String库中的fin