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

【任务6.15】字符串操作

字符串的3种操作

在字符串处理中,常常需要实现取子串、插入、删除这3种操作。问题描述如下:

(1) 取子串操作: 输入字符串、起始位置、子串长度,输出子串的内容。

(2) 插入操作: 输入源字符串、目标字符串、指定位置,把源字符串插入到目标字符串的指定位置,并输出插入后的目标字符串。

(3) 删除操作: 输入字符串、待删除子串的起始位置和长度,从字符串中删除待删除子串,并输出删除后的字符串。

程序运行时应先给出一个菜单,由使用者输入想进行的操作及实现该项操作所需的参数。输入完毕后,由程序给出操作后的结果。

//************************************************
//* Source Name: ChapterSix_JobFifteen.cpp
//* Founction  : String operations
//* Author	   : Skyera
//* Create Time	   : 2025-7-27
//* Modify	   : 
//* Modify Time:
//************************************************
#include <iostream>
#include <string>
using namespace std;
// 取子串操作
string substrOperation(const string &str, int start, int length)
{// 检查起始位置是否有效if(start < 0 || start >= str.length()){return "错误,起始位置无效";}// 检查长度是否有效,若长度超过剩余字符则只取到末尾if(length < 0){return "错误,长度不能为负数";}int actualLength = min(length, (int)str.length() - start);return str.substr(start, actualLength);
}
// 插入操作
string insertOperation(const string &source, const string &target, int pos)
{// 检查插入位置是否有效if(pos < 0 || pos > source.length()){return "错误,插入位置无效";}string result = target;return result.insert(pos, source);
}
// 删除操作
string deleteOperation(const string &str, int start, int length)
{// 检查起始位置是否有效if(start < 0 || start >= str.length()){return "错误,起始位置无效";}// 检查长度是否有效if(length <= 0) {return "错误,长度必须为正数";}// 计算实际删除的长度,防止超出字符串范围int actualLength = min(length, (int)str.length() - start);string result = str;return result.erase(start, actualLength);
}
// 显示菜单
void showMenu()
{cout << "\n============字符串操作菜单====================" << endl;cout << "1. 取子串操作" << endl;cout << "2. 插入操作" << endl;cout << "3. 删除操作" << endl;cout << "4. 退出程序" << endl;cout << "================================================" << endl;cout << "请选择操作(1~4): ";
}
int main()
{int choice;do{showMenu();cin >> choice;cin.ignore();	// 忽略输入缓冲区中的换行符switch(choice){case 1:{string str;int start, length;cout << "\n------取子串操作--------" << endl;cout << "请输入原始字符串: ";getline(cin, str);cout << "请输入起始位置: ";cin >> start;cout << "请输入子串长度: ";cin >> length;string result = substrOperation(str, start, length); cout << "取子串结果: " << result << endl;break;}case 2:{string source, target;int pos;cout << "\n--------插入操作-------------" << endl;cout << "请输入源字符串(要插入的字符串): ";getline(cin, source);cout << "请输入目标字符串(被插入的字符串):v";getline(cin, target);cout << "请输入插入的位置: ";cin >> pos;string result = insertOperation(source, target, pos);cout << "插入后结果: "  << result << endl;break;}case 3:{string str;int start, length;cout << "\n---------删除操作----------------" << endl;cout << "请输入原始字符串: ";getline(cin, str);cout << "请输入待删除子串的起始位置: ";cin >> start;cout << "请输入待删除子串的长度: ";cin >> length;string result = deleteOperation(str, start, length);cout << "删除后结果: " << result << endl;break;}case 4:{cout << "程序已退出,谢谢使用" << endl;break;}case 5:{cout << "无效的输入,请重新输入" << endl;}}}while(choice != 4);return 0;
}

http://www.dtcms.com/a/300791.html

相关文章:

  • 51c自动驾驶~合集9
  • 以太坊ETF流入量超越比特币 XBIT分析买币市场动态与最新价格
  • 51核和ARM核单片机OTA实战解析(二)
  • docker与k8s的容器数据卷
  • 接口自动化-allure报告
  • 从零开始:Coze Studio开源版部署全记录(win11)
  • Leetcode力扣解题记录--第136题(查找单数)
  • note22:应用安全编码规范培训
  • 从零开始学习Dify-基于MCP的智能旅行规划助手上(八)
  • Windows10系统使用Cmake4.1.0构建工具+Visual Studio2022编译Opencv4.11教程
  • Jangow靶机通关教程
  • DAY21-二叉树的遍历方式
  • Gradio全解8——ChatInterfaceChatbot:聊天界面类与聊天机器人(3)——ChatInterface的多模态功能与附加输入输出
  • 9-大语言模型—Transformer 核心:多头注意力的 10 步拆解与可视化理解
  • 新手向:MySQL配置性能优化
  • unity开发中Hash、Queue、LinkedList简单介绍
  • 算法竞赛阶段二-数据结构(37)数据结构动态链表list
  • QT开发---网络编程下
  • 《C++》STL--string详解(上)
  • Linux文件理解,基础IO理解
  • 怎样让阿里云服务器(centos)有界面
  • 网络协议:计算机世界的“交通规则“与“社交礼仪“
  • i节点学习
  • Qt 分裂布局:QSplitter 使用指南
  • C语言——————学习笔记(自己看)
  • 基于多智能体的任务管理系统架构设计与实现
  • 北大区块链技术与应用 笔记
  • [STM32][HAL]stm32wbxx 超声波测距模块实现(HY-SRF05)
  • 【基础完全搜索】USACO Bronze 2022 Open - 谎言的人数Counting Liars
  • 元宇宙背景下治理模式:自治的乌托邦