栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++实现简易文本编辑器

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++实现简易文本编辑器

本文实例为大家分享了C++实现文本编辑器的具体代码,供大家参考,具体内容如下

1.简易文本编辑器

2.用链表实现,保存到文件中

#include
#include
#include
#include
#include
#include
using namespace std;
int NumberCount=0;//数字个数
int CharCount=0;//字母个数
int PunctuationCount=0;//标点符号个数
int BlankCount=0;//空白符个数
 
class Node
{
public:
  string character;
  int cursor;
  int offset;
  Node* next;
  Node(){
    cursor=0;//每行的光标初始位置
    offset=0;//每行的初始偏移位置
    next=NULL;
  }
};
 
class TextEditor
{
private:
  Node* head;
  string name;
  int line;//可更改的行数
  int length;//行数
public:
  TextEditor();
  ~TextEditor();
  string GetName();
  void SetName(string name);
  int GetCursor();
  int MoveCursor(int offset);
  int SetCursor(int line,int offset);
  void AddText(const string s);
  void InsertText(int seat,string s);
  int FindText(string s);
  void DeleteText(string s);
  int GetLine();
  void Count();
  friend ostream& operator<<(ostream& out,TextEditor &text);
  Node* Gethead(){
    return head;
  }
  //int GetLength()
  //{
  //   return length;
  // }
 // int FindText(string s);
 // void DeleteText(int seat,string s);
};
 
TextEditor::TextEditor()
{
  head=NULL;
  name="test";//文件初始名
  //tail=NULL;
  line=1;
  length=0;
}
 
TextEditor::~TextEditor()
{
  Node* p=head;
  Node* q;
  while(p!=NULL){
    q=p->next;
    delete p;
    p=q;
  }
 
}
 
int TextEditor::GetLine()
{
  return line;
}
 
string TextEditor::GetName()
{
  return name;
}
 
void TextEditor::SetName(string name)
{
  this->name=name;
}
 
int TextEditor::GetCursor()
{
  Node *p=head;
  while(p->next!=NULL)
    p=p->next;
  return p->cursor;
}
 
int TextEditor::MoveCursor(int offset)
{
  Node *p=head;
  int i=1;
  if(length+1next!=NULL&&inext;
      i++;
    }
  }
  if(offset>p->character.length()){
    cout<<"移动位置太大!"<cursor+=offset;
  //cout<<"p ->cursor="<cursor<cursor;
}
 
int TextEditor::SetCursor(int line,int offset)
{
  this->line=line;
  //cout<<"line="<line<character=s;
  p->next=NULL;
  if(head==NULL)
    head=p;
  else{
    while(q->next!=NULL)
      q=q->next;
    q->next=p;
  }
 
    length++;
    // line++;
}
 
void TextEditor::InsertText(int seat,string s)
{
  Node *p=head;
  int i=1;
  if(length+1next!=NULL&&inext;
      i++;
    }
  }
  //MoveCursor(seat);
  //cout<<"p->cursor="<cursor<character.length();i++)
  substr+=p->character[i];
 
  p->character.insert(p->cursor,s);
 
 
  cout<<"substr="<cursor=0;//光标清零
}
 
ostream& operator<<(ostream& out,TextEditor &text)
{
  int i=1;
  Node* p=text.Gethead();
  while(p!=NULL){
    out<character<next;
  }
  // cout<<"length="<next;
      // cout<character<character.erase(k-1,s.length());
    cout<<"删除成功!"<character.length();i++){
 if(p->character[i]>='0'&&p->character[i]<='9')
   NumberCount++;
 else if(p->character[i]>'a'&&p->character[i]<'z'||p->character[i]>'A'&&p->character[i]<'Z')
   CharCount++;
 else if(ispunct(p->character[i]))
   PunctuationCount++;
 else if(p->character[i]==' ')
   BlankCount++;
      }
      p=p->next;
  }
}
 
int main()
{
  int i,j,k,n=2;
  string s,t,name;
  TextEditor text;
  cout<<"---------------------------------------"<>n;
    getchar();
    switch(n){
      case 1: cout<<"请输入字符:"; getline(cin,s,'n'); text.AddText(s); break;
      case 2: cout<<"请输入文档名字:"; cin>>name; text.SetName(name); break;
      case 3: cout<>i;
 cout<<"光标在第"<>j;
 cout<<"输入插入字符:";
 getchar();
 getline(cin,s);
 text.InsertText(text.SetCursor(i,j),s); break;
      }
      case 6: {
 cout<<"输入查找的字符串:";
 getline(cin,s);
 int k=text.FindText(s);
 if(k==-1)
   cout<<"查找失败!"<character<next;
 }
 exit(0);
 break;
      }
      default: cout<<"输入错误,请重新输入!"<

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/61888.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号