C++中字符串的查找与插入方式

 更新时间:2026年04月26日 10:40:18   作者:2601_95612197  
本文介绍了三种查找子字符串的方法,包括暴力匹配、使用函数和使用循环,同时,介绍了三种插入内容的方法,包括直接插入、使用substr截取和使用for循环逐个字符拼接,最后强调了这些方法仅为个人经验,希望能提供参考

一、字符串查找

在一个长字符串中找到需要从子串,可以用暴力匹配,从长串中第一个字符开始,一个个和字串对比,能完全对上就是找到了,对不上就循环加一。

1、用函数加循环查找

int findsub(const string &s,const string &sub){
	int n=s.size(),m=sub.size();
	if(m>n)
	    return -1;
	for(int i=0;i<=n-m;i++){
		int j=0;
		while(j<m&&s[i+j]==sub[j]){
			j++;
		}
		if(j==m){
			return i;
		}
	}
} 

2、用string中自带的find()

#include<bits/stdc++.h>
using namespace std;
int main(){
	string s,sub;//s是主串,sub是要查找的子串 
	cin>>s>>sub;
	size_t pos=s.find(sub);//调用string中自带的find(),会查找出子串第一次出现的位置,返回值类型是size_t(无符号整数,专门用来存下标或长度) 
	if(pos!=string::npos){//string::npos是定义的常量,表示没找到 
		cout<<pos<<endl;//找到输出下标 
	}
	else{
		cout<<-1<<endl;//没找到输出-1 
	}
	return 0;
}

可以用getlin(cin,s)整行读取字符串包括空格

二、字符串插入

在指定位置加内容,把原字符串在指定位置拆成两个部分,前部分加上插入内容再加上后半部分。

1、用substr把字符串截取字串,拼接起来

#include<bits/stdc++.h>
using namespace std;
int main(){
	string s;//原字符串 
	string ins;//要插入的字符串 
	int pos=2;//在下标为二的位置上插入新的字符 
	cin>>s>>ins;
	string res=s.substr(0,pos)+ins+s.substr(pos);//substr从字符串中截取子串,s.substr(起始位置,截取长度),s.substr(起始位置),不写长度默认到最后 
	cout<<res;
	return 0; 
}

2、用for循环,逐个字符拼接

#include<bits/stdc++.h>
using namespace std;
int main(){
	string s;//原字符串 
	string ins;//要插入的字符串 
	int pos=2;//在下标为二的位置上插入新的字符 
	cin>>s>>ins;
	string str;
	for(int i=0;i<pos;i++){
		str=str+s[i];
	}//原字符前半部分:0~pos-1 
	for(int i=0;i<ins.size();i++){
		str=str+ins[i];
	}//插入的内容 
	for(int i=pos;i<s.size();i++){
		str=str+s[i];
	}//原字符串后半部分:pos~结束 
	cout<<str;
	return 0; 
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 深入分析C++中几个最不常用的关键字

    深入分析C++中几个最不常用的关键字

    本篇文章是对C++中几个最不常用的关键字进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • c语言统计素数之和的实例

    c语言统计素数之和的实例

    这篇文章主要介绍了c语言统计素数之和的实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • c++实现哈希桶的步骤

    c++实现哈希桶的步骤

    本文主要介绍了c++实现哈希桶的步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 基于C++实现去除字符串头尾指定字符功能

    基于C++实现去除字符串头尾指定字符功能

    编程时我们经常需要对字符串进行操作,其中有一项操作就是去除字符串的头(尾)指定的字符,比如空格。本文为大家详细介绍了如何利用C++实现这一效果,需要的可以参考一下
    2022-04-04
  • C语言全面细致讲解单双精度float与double的使用方法

    C语言全面细致讲解单双精度float与double的使用方法

    C语言中小数的数据类型为 float 或 double:float 称为单精度浮点数,double 称为双精度浮点数。不像整数,小数的长度始终是固定的,float 占用4个字节,double 占用8个字节
    2022-05-05
  • Opencv实现视频播放与进度控制

    Opencv实现视频播放与进度控制

    这篇文章主要为大家详细介绍了Opencv实现视频播放与进度控制,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • C语言详解冒泡排序实现

    C语言详解冒泡排序实现

    冒泡排序是一种简单的排序算法,它也是一种稳定排序算法。其实现原理是重复扫描待排序序列,并比较每一对相邻的元素,当该对元素顺序不正确时进行交换。一直重复这个过程,直到没有任何两个相邻元素可以交换,就表明完成了排序
    2022-04-04
  • C++实现简易通讯录功能

    C++实现简易通讯录功能

    这篇文章主要为大家详细介绍了C++实现简易通讯录功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • C语言实现大数值金额大写转换的方法详解

    C语言实现大数值金额大写转换的方法详解

    这篇文章主要为大家详细介绍了如何利用C语言实现大数值金额大写转换的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-03-03
  • QT实现自定义Http客户端的示例代码

    QT实现自定义Http客户端的示例代码

    这篇文章主要为大家详细介绍了QT如何实现自定义Http客户端的,可以实现支持get,post请求方式;支持连接超时处理;支持网络错误,尝试重连等功能,感兴趣的小伙伴可以学习一下
    2022-11-11

最新评论