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

阿里云 网站深圳制作网站培训学校

阿里云 网站,深圳制作网站培训学校,检察门户网站建设方案,嘉兴网站系统总部核心功能 文件管理 新建空白文档打开现有文本文件保存当前编辑内容 文本编辑 显示完整文本内容在指定位置插入新文本删除指定行 文本处理 查找特定文本内容全局替换文本片段 用户体验 交互式菜单界面,操作直观实时跟踪文件修改状态跨平台支持(Windo…
核心功能
  1. 文件管理

    • 新建空白文档
    • 打开现有文本文件
    • 保存当前编辑内容
  2. 文本编辑

    • 显示完整文本内容
    • 在指定位置插入新文本
    • 删除指定行
  3. 文本处理

    • 查找特定文本内容
    • 全局替换文本片段
用户体验
  • 交互式菜单界面,操作直观
  • 实时跟踪文件修改状态
  • 跨平台支持(Windows/Linux)
  • 输入验证和错误提示
技术实现
  • 使用vector<string>存储文本行
  • 基于文件流实现文件读写
  • 利用字符串查找和替换功能
  • 简洁的类封装结构

这个编辑器提供了文本编辑的基本功能,代码结构清晰,适合作为学习 C++ 文件操作和字符串处理的实践案例。
 

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <cstdlib>
#include<bits/stdc++.h>
using namespace std;// 清屏函数
void clrScr() {#ifdef _WIN32system("cls");#elsesystem("clear");#endif
}// 暂停函数
void pause() {cout << "\n按回车键继续...";cin.ignore(numeric_limits<streamsize>::max(), '\n');cin.get();
}class TextEditor {
private:vector<string> lines;string fileName;bool modified;public:TextEditor() : modified(false) {}// 显示菜单void showMenu() {clrScr();cout << "===== 简易文本编辑器 =====\n";cout << "1. 新建文件\n";cout << "2. 打开文件\n";cout << "3. 保存文件\n";cout << "4. 显示文本\n";cout << "5. 插入文本\n";cout << "6. 删除行\n";cout << "7. 替换文本\n";cout << "8. 查找文本\n";cout << "0. 退出\n";cout << "请选择: ";}// 新建文件void newFile() {if (modified) {cout << "当前文件未保存,是否继续?(y/n): ";char c;cin >> c;if (c != 'y' && c != 'Y') return;}lines.clear();fileName = "";modified = false;cout << "已创建新文件\n";pause();}// 打开文件bool openFile() {cout << "输入文件名: ";string name;cin >> name;ifstream file(name);if (!file.is_open()) {cout << "无法打开文件: " << name << endl;pause();return false;}if (modified) {cout << "当前文件未保存,是否继续?(y/n): ";char c;cin >> c;if (c != 'y' && c != 'Y') {file.close();return false;}}lines.clear();string line;while (getline(file, line)) {lines.push_back(line);}file.close();fileName = name;modified = false;cout << "已打开文件: " << name << endl;pause();return true;}// 保存文件bool saveFile() {if (fileName.empty()) {cout << "输入文件名: ";cin >> fileName;}ofstream file(fileName);if (!file.is_open()) {cout << "无法保存文件: " << fileName << endl;pause();return false;}for (const string& line : lines) {file << line << endl;}file.close();modified = false;cout << "文件已保存: " << fileName << endl;pause();return true;}// 显示文本void displayText() {if (lines.empty()) {cout << "文本为空\n";pause();return;}clrScr();for (size_t i = 0; i < lines.size(); i++) {cout << (i + 1) << ": " << lines[i] << endl;}pause();}// 插入文本void insertText() {int lineNum;cout << "在第几行后插入? (0=开头): ";cin >> lineNum;if (lineNum < 0 || lineNum > (int)lines.size()) {cout << "行号无效\n";pause();return;}cin.ignore();cout << "输入文本 (空行结束):\n";string text;while (true) {getline(cin, text);if (text.empty()) break;if (lineNum == 0) {lines.insert(lines.begin(), text);} else {lines.insert(lines.begin() + lineNum, text);lineNum++;}}modified = true;cout << "文本已插入\n";pause();}// 删除行void deleteLine() {int lineNum;cout << "删除第几行? (1-" << lines.size() << "): ";cin >> lineNum;if (lineNum < 1 || lineNum > (int)lines.size()) {cout << "行号无效\n";pause();return;}lines.erase(lines.begin() + lineNum - 1);modified = true;cout << "行已删除\n";pause();}// 替换文本void replaceText() {if (lines.empty()) {cout << "文本为空\n";pause();return;}string oldText, newText;cout << "要替换的文本: ";cin.ignore();getline(cin, oldText);cout << "替换为: ";getline(cin, newText);int count = 0;for (string& line : lines) {size_t pos = 0;while ((pos = line.find(oldText, pos)) != string::npos) {line.replace(pos, oldText.length(), newText);pos += newText.length();count++;}}if (count > 0) {modified = true;cout << "已替换 " << count << " 处\n";} else {cout << "未找到匹配文本\n";}pause();}// 查找文本void findText() {if (lines.empty()) {cout << "文本为空\n";pause();return;}string text;cout << "要查找的文本: ";cin.ignore();getline(cin, text);bool found = false;for (size_t i = 0; i < lines.size(); i++) {if (lines[i].find(text) != string::npos) {cout << (i + 1) << ": " << lines[i] << endl;found = true;}}if (!found) {cout << "未找到匹配文本\n";}pause();}// 主循环void run() {int choice;while (true) {showMenu();if (!(cin >> choice)) {cout << "无效选择,请输入数字\n";cin.clear();cin.ignore(numeric_limits<streamsize>::max(), '\n');pause();continue;}switch (choice) {case 0:if (modified) {cout << "文件未保存,是否退出?(y/n): ";char c;cin >> c;if (c != 'y' && c != 'Y') continue;}clrScr();cout << "感谢使用,再见!\n";return;case 1: newFile(); break;case 2: openFile(); break;case 3: saveFile(); break;case 4: displayText(); break;case 5: insertText(); break;case 6: deleteLine(); break;case 7: replaceText(); break;case 8: findText(); break;default:cout << "无效选择,请重试\n";pause();break;}}}
};int main() {TextEditor editor;editor.run();return 0;
}

http://www.dtcms.com/wzjs/825264.html

相关文章:

  • 静态网站上下篇代码什么优化
  • 企业网站后台模板网站的充值是怎么做的
  • 北京网站制作公司兴田德润可以不南京网站开发培训
  • 筹划电子商务网站建设美工素材网站有哪些
  • wordprees可以做棋类网站吗网站如何防止被攻击
  • 门户型网站模板中卫网架配件哪家好
  • 邢台做网站哪家公司好网站宣传的重要性
  • 免费ftp网站寄生虫网站怎么做
  • 产品推广网站排名市场营销活动策划方案
  • 个人网站asp源码河北省建设工程
  • 百度网盘可以做网站吗?企业网站定制
  • 商丘网站建设想象力网络哈尔滨手机网站建设报价
  • 站群网站和做seo那个号合购吧登录WordPress
  • 怎么制作网站开发设计不知怎么入门
  • 尊园地产做的网站西乡塘区网站建设
  • 网站的功能包括哪些内容wordpress pjax
  • 网站 多语言处理建设一个网站的一般过程
  • 网页设计与网站建设从入门到精通五金网站制作
  • 贵州建筑网站谷歌广告联盟怎么做
  • 微信公众号网站开发注意搜索引擎优化专员
  • 深圳网站备全国网站建设大赛
  • 哪个网站用户体验较好上海建网站服务器
  • 自己做网站需要什么软件做水果代理去哪个网站
  • 浙江省职业能力建设处网站电影下载网站模板
  • 网站建设待遇怎样现在确诊阳性什么症状
  • 莱芜网站建设怎么样内蒙网络_网站建设
  • 网络营销企业网站wordpress 主题后门
  • 青岛房产网站网站建设方面的书
  • 网站建设的方案实施包括安徽网站公司网站
  • 广州网页设计网站建设企业网站建设系统