logo资料库

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

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
C++实现简易文本编辑器 实现简易文本编辑器 主要为大家详细介绍了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<
case 5:{ cout<<"输入行数:"; cin>>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<<"输入错误,请重新输入!"<
分享到:
收藏