简单文本编辑器c++源代码

  • O5_143133
    了解作者
  • 1.9KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-04-11 09:45
    上传日期
* c++实现 * command模式编辑读入文件行 * 摘自《数据结构与算法分析》(c++版)
TextEditor.rar
  • TextEditor
  • TextEditor.h
    453B
  • td_TextEditor.cpp
    472B
  • TextEditor.cpp
    3.1KB
内容介绍
#include <iostream> #include <cctype> #include <string> using namespace std; #include "TextEditor.h" //---吃掉cin中空白字符的工具函数 void eatBlanks() { char blank; while(cin.peek() == ' ') cin.get(blank); } //---构造函数定义 TextEditor::TextEditor(string inFileName,string outFileName) { //inStream.open(inFileName.c_str()); //outStream.open(outFileName.c_str()); inStream.open(inFileName.data()); outStream.open(outFileName.data()); if ( !inStream.is_open() || !outStream.is_open()) { //cout<<"Fail to Open file"<<endl; cerr<<"Fail to Open file"<<endl; exit(-1); } else { cout<<"Open File Succseeful..\n"; } } void TextEditor::run() { showMunu(); cout<<"Enter an editing command following each prompt >\n\n"; getline(inStream,currentLine); cout<<"TEXT: "<<currentLine<<endl; char command; string str1,str2; for(;;) { if(inStream.eof()) break; cout << '>'; cin >> command; cin.ignore(1,'\n'); switch(toupper(command)) { case 'I': eatBlanks(); getline(cin,str1); cout << "Insert before what string : "; getline(cin,str2); insert(str1,str2); break; case 'D': eatBlanks(); getline(cin,str1); erase(str1); break; case 'R': eatBlanks(); getline(cin,str1); cout << "With What? "; getline(cin,str2); replace(str1,str2); break; case 'N': next(); break; case 'Q': quit(); break; default : cout << "\n*** Illegal command ***\n"; showMunu(); cout << "TEXT: "<<currentLine<<endl; }//End of switch if(!inStream.eof()) cout << "TEXT: "<<currentLine<<endl; }//End of for cout<< "\n*** Editing complete ***\n"; } //---显示command void TextEditor::showMunu() { //cout<<"showMunu"<<endl; cout<<"Editing commands are:\n" "I str: Insert string str before another string\n" "D str: Delete string str\n" "R str: Replace string str with another string\n" "N : Get next line of text\n" "Q : Quit editing\n"; } //---插入 str1 在str2之前 void TextEditor::insert(string str1,string str2) { size_t position = currentLine.find(str2); if( position != string::npos ) currentLine.insert(position,str1); else cout<<"\""<< str2<<"\"" <<" not found\n"; } //---清除str void TextEditor::erase(string str) { size_t position = currentLine.find(str); if (position != string::npos) currentLine.erase(position,str.length()); else cout<<"\""<< str<<"\"" <<"not found\n"; } //---用str2替换str1 void TextEditor::replace(string str1,string str2) { size_t position = currentLine.find(str1); if (position != string::npos) currentLine.replace(position,str1.length(),str2); else cout<<"\""<< str1 <<"\"" <<" not found\n"; } //---读取下一行 void TextEditor::next() { outStream << currentLine<<endl; getline(inStream,currentLine); cout << "\nNext Line:\n"; } //---退出程序 void TextEditor::quit() { outStream << currentLine<<endl; for(;;) { getline(inStream,currentLine); if(inStream.eof()) break; outStream << currentLine <<endl; }//End of for }
评论
    相关推荐
    • 注册表编辑器
      遍历注册表,列出指定子键下的注册表信息,算法优化过,速度有了很大的提高。
    • 音乐编辑器
      比较好的音乐编辑器,本人亲自试用,是初学者或音乐编辑爱好者适合使用的软件
    • editplus编辑器
      工人ffffffffffffffffff
    • 批处理编辑器
      批处理编辑器,一个很好用的编辑器,支持命令查询,编辑以后就可以运行,查看效果。
    • eWebEditor 编辑器带分页符
      由于项目需要,修改了eWebEditor, 增加分页符号,可以根据自己的算法进行大文章的分页
    • 简易文本编辑器
      利用C++语言,根据KMP算法和string类库开发的简易文本编辑器,包括文本输入,查询,添加,删除,替换,输出等操作,比较不足的是此代码不涉及文件操作,并且没有实现光标操作。
    • A星算法地图编辑器
      实现的功能有导入地图,地图编辑,地图数组文件生成等。编辑器运用的java编写,大家只要把项目工程导入Eclipse运行即可进行地图编辑,本编辑可以课让你更好更直接更简便地把你的地图转化二维数组。
    • 超文本编辑器
      用于打开超大文本文件(测试过 7GB: 打开 10 秒,搜索 15 秒); 支持打开超大文件,测试中打开 7GB... 支持常规搜索算法,譬如正则,全字,大小写等; 支持受限编辑; 支持HEX模式; 支持文件切割/合并/部分提取等;
    • 文本编辑器
      文本编辑器,bs,功能很强大