C++ 中字符串查找、字符串截取、字符串替换

Wesley13
• 阅读 1046

参照:C++基础-string截取、替换、查找子串函数

1、字符串查找

 s.find(s1)         //查找s中第一次出现s1的位置,并返回(包括0)

 s.rfind(s1)        //查找s中最后次出现s1的位置,并返回(包括0)

 s.find_first_of(s1)       //查找在s1中任意一个字符在s中第一次出现的位置,并返回(包括0)

s.find_last_of(s1)       //查找在s1中任意一个字符在s中最后一次出现的位置,并返回(包括0)

s.fin_first_not_of(s1)         //查找s中第一个不属于s1中的字符的位置,并返回(包括0)

s.fin_last_not_of(s1)         //查找s中最后一个不属于s1中的字符的位置,并返回(包括0)

2、字符串截取

s.substr(pos, n)    //截取s中从pos开始(包括0)的n个字符的子串,并返回

s.substr(pos)        //截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回

3、字符串替换

 s.replace(pos, n, s1)     //用s1替换s中从pos开始(包括0)的n个字符的子串

4、代码测试(字符串操作.cpp)

#include <iostream>
using namespace std;

/* 字符串查找 */ 
void findSubString(string str){
    // find()函数的使用,返回查找对象第一次出现的位置.  
    cout << str.find("fs") << endl;
    // rfind()函数的使用,返回查找对象最后出现的位置
    cout << str.rfind("s") << endl;
}

/* 字符串截取 */ 
void getSubString(string str){
    // substr(pos)函数的使用,返回从pos开始(包含pos位置的字符)所有的字符
    cout << str.substr(2) << endl;
    // substr(pos,n),返回从pos开始(包含pos位置的字符)n个字符
    cout << str.substr(2, 2) << endl;
}

/* 字符串替换 */ 
void replaceString(string str){
    // replace(pos,n,s1),用s1替换从pos开始的n个字符
    cout << str.replace(0,2,"xiaoming") << endl;
}

int main()
{
    string str = string("sdfsf");
    // findSubString(str);
    // getSubString(str);
    replaceString(str);
    return 0;
}

C++ 中字符串查找、字符串截取、字符串替换

5、字符替换(用x替换字符串中所有的a.cpp)

#include <iostream>
using namespace std;

/* 用x替换a */
void replaceAWithX(string str){
    int pos;
    pos = str.find("a");
    while(pos != -1){
        // str.length()求字符的长度,注意str必须是string类型
        str.replace(pos,string("a").length(),"x");
        pos = str.find("a");
    }

    cout << str << endl;
}

int main()
{
    string str = string("fsafsdf");
    replaceAWithX(str);
    return 0;
}

C++ 中字符串查找、字符串截取、字符串替换

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Stella981 Stella981
3年前
JS 苹果手机日期显示NaN问题
问题描述newDate("2019122910:30:00")在IOS下显示为NaN原因分析带的日期IOS下存在兼容问题解决方法字符串替换letdateStr"2019122910:30:00";datedateStr.repl
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
JavaScript常用函数
1\.字符串长度截取functioncutstr(str,len){vartemp,icount0,patrn/^\x00\xff/,strre"";for(vari
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这