当前位置: 首页 > article >正文

机试 | STL | string | 文字处理软件

题目:

P5734 【深基6.例6】文字处理软件 - 洛谷

不使用库函数

#include<stdio.h>
#include <iostream>
#include<string>
using namespace std;int main()
{int q;//第一行输入一个正整数q,表示操作次数string content;//第二行输入一个字符串str,表示最开始的字符串cin >> q;cin >> content;for (int i = 0; i < q; i++){int flag;cin >> flag;//操作标志if (flag == 1){string str;//插入字符串cin >> str;content = content + str;cout << content << endl;}else if (flag == 2){int a;//截取起始位置int b;//截取长度cin >> a;cin >> b;string temp = content;content = "";//注意是a+b-1,从a开始(包括a)的b个字符for (int j = a; j <= a + b - 1; j++){content += temp[j];}cout << content << endl;}else if (flag == 3){int a;//插入位置string str;//插入字符串cin >> a;cin >> str;string temp;for (int k = 0; k < a; k++){temp += content[k];}temp += str;for (int k = a; k < content.length(); k++){temp += content[k];}content = temp;cout << content << endl;}else if (flag == 4){string str;cin >> str;//查找字符串if (content.find(str) < content.length()) cout << content.find(str) << endl;else cout << -1 << endl;}}return 0;
}

使用库函数

  • find函数在找不到的时候会返回一个很大的数,长度大于字符串的长度,不是返回0
#include<stdio.h>
#include<iostream>
#include<string>using namespace std;int main()
{int q;//操作次数string content;//最开始的字符串cin >> q;cin >> content;while (q){int operation;//操作标志:1,2,3,4cin >> operation;//1 str:后接插入,在文档后面插入字符串 str,并输出文档的字符串;if (operation == 1){string str;//后接插入的字符串cin >> str;content += str;cout << content << endl;}//2 a b:截取文档部分,只保留文档中从第 a 个字符起 b 个字符,并输出文档的字符串;else if (operation == 2){int a, b;cin >> a >> b;string temp = content.substr(a, b);content = temp;cout << content << endl;}//3 a str:插入片段,在文档中第 a 个字符前面插入字符串 str,并输出文档的字符串;else if (operation == 3){int a;string str;cin >> a >> str;content.insert(a, str);cout << content << endl;}//4 str:查找子串,查找字符串 str 在文档中最先的位置并输出;如果找不到输出 −1。else if (operation == 4){string str;cin >> str;//找不到会返回一个诡异的数字,比字符串长//这里判断是否比长度小,防止异常输出if (content.find(str) < content.length()) cout << content.find(str) << endl;//这样会得到异常的输出,在找不到的时候,因为不是0,所以还是执行if,不会输出-1//if (content.find(str)) cout << content.find(str) << endl;else cout << -1 << endl;}q--;}return 0;
}
http://www.lryc.cn/news/2386573.html

相关文章:

  • 运动规划实战案例 | 图解基于状态晶格(State Lattice)的路径规划(附ROS C++/Python仿真)
  • 深入浅出对抗学习:概念、攻击、防御与代码实践
  • Neo4j(二) - 使用Cypher操作Neo4j
  • 09、供应商管理数字化转型:从潜在评估到战略合作的系统化方法
  • AI时代新词-AI增强现实(AI - Enhanced Reality)
  • 批量转存夸克网盘内容并分享实操教程
  • Swagger与go-zero框架生成和展示API文档详解
  • “安康杯”安全生产知识竞赛活动流程方案
  • 特征分解:线性代数在AI大模型中的核心工具
  • sqlite的拼接字段的方法(sqlite没有convert函数)
  • 【SSL部署与优化​】​​OCSP Stapling配置指南:减少证书验证延迟​​
  • 【C#】Invalidate()的使用
  • 理解计算机系统_并发编程(10)_线程(七):基于预线程化的并发服务器
  • 身份认证: JWT和Session是什么?
  • OpenFOAM 字典系统与求解器配置解析机制
  • 机器学习中的多GPU训练模式
  • TPAMI 2025 | CEM:使用因果效应图解释底层视觉模型
  • 小红书文章内容提取免费API接口教程
  • Halcon 图像预处理②
  • 20250526-C++基础-函数指针
  • 软考 系统架构设计师系列知识点之杂项集萃(73)
  • 大模型训练中的GPU作用解析
  • Flutter Web 3.0革命:用WebGPU实现浏览器端实时光追渲染,性能提升300%
  • DeepSeek-V3-0526乍现
  • Java设计模式之观察者模式:从基础到高级的全面解析
  • C/C++---类型转换运算符
  • STM32 I2C 通信协议
  • 【后端高阶面经:Elasticsearch篇】38、Elasticsearch 高可用架构解析:分片容灾、Translog 调优与双集群
  • 5月26日复盘-自注意力机制
  • *HTML `<script>` 标签中的核心属性解析:掌控脚本加载与执行的艺术