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

机试 | 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.xdnf.cn/news/9040.html

相关文章:

  • linux 进程间通信_共享内存
  • Python打卡第37天
  • 数据结构基础知识补充
  • leetcode刷题日记——求根节点到叶节点数字之和
  • Python数据分析基础(一)
  • vue3自定义指令来实现 v-lazyImg 功能
  • IP地址查询的重要性
  • 01 NLP的发展历程和挑战
  • 第2章 程序设计语言基础知识
  • C#编解码:Base64扩展类的实现与应用
  • 人工智能如何协助老师做课题
  • 电子电路:什么是感应电动势?
  • C++ 模板函数深度指南
  • 【CF】Day66——Edu 168.D + CF 853 (Div. 2).C (树 + 二分 + 贪心 | 组合数学)
  • 佰力博科技与您探讨铁电分析仪具有哪些测试功能
  • [PyMySQL]
  • reflect-metadata作用
  • Ubuntu | NVIDIA 驱动、CUDA 与 cuDNN 的安装与配置 / 常见问题及解决方法
  • Zabbix集成Grfana自定义仪表盘
  • World of Warcraft [CLASSIC] Jewelcrafting Gemstone 3 [80 WLK]
  • 初等数论--Garner‘s 算法
  • 邻近标记技术(PL):探索生物分子相互作用的前沿工具
  • Java设计模式之适配器模式
  • AI时代新词-多模态(Multimodal)
  • 测评机构如何通过漏扫保障软件安全?扫描范围与局限解析
  • leetcode:2235. 两整数相加(python3解法,数学相关算法题)
  • 十六进制字符转十进制算法
  • C++——STL——unordered_map与unordered_set的使用以及使用哈希表封装unordered_map/set
  • https的进化之路(八卦版)
  • JVM 深度解析