C++实现简易文本编辑器
本文实例为大家分享了C++实现文本编辑器的具体代码,供大家参考,具体内容如下
1.简易文本编辑器
2.用链表实现,保存到文件中
#include#include #include #include #include #include usingnamespacestd; intNumberCount=0;//数字个数 intCharCount=0;//字母个数 intPunctuationCount=0;//标点符号个数 intBlankCount=0;//空白符个数 classNode { public: stringcharacter; intcursor; intoffset; Node*next; Node(){ cursor=0;//每行的光标初始位置 offset=0;//每行的初始偏移位置 next=NULL; } }; classTextEditor { private: Node*head; stringname; intline;//可更改的行数 intlength;//行数 public: TextEditor(); ~TextEditor(); stringGetName(); voidSetName(stringname); intGetCursor(); intMoveCursor(intoffset); intSetCursor(intline,intoffset); voidAddText(conststrings); voidInsertText(intseat,strings); intFindText(strings); voidDeleteText(strings); intGetLine(); voidCount(); friendostream&operator<<(ostream&out,TextEditor&text); Node*Gethead(){ returnhead; } //intGetLength() //{ //returnlength; //} //intFindText(strings); //voidDeleteText(intseat,strings); }; 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; deletep; p=q; } } intTextEditor::GetLine() { returnline; } stringTextEditor::GetName() { returnname; } voidTextEditor::SetName(stringname) { this->name=name; } intTextEditor::GetCursor() { Node*p=head; while(p->next!=NULL) p=p->next; returnp->cursor; } intTextEditor::MoveCursor(intoffset) { Node*p=head; inti=1; if(length+1 next!=NULL&&i next; i++; } } if(offset>p->character.length()){ cout<<"移动位置太大!"< cursor+=offset; //cout<<"p->cursor="< cursor< cursor; } intTextEditor::SetCursor(intline,intoffset) { 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++; } voidTextEditor::InsertText(intseat,strings) { Node*p=head; inti=1; if(length+1 next!=NULL&&i next; 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) { inti=1; Node*p=text.Gethead(); while(p!=NULL){ out< character< next; } //cout<<"length="< character.length(); while(q!=NULL){ p=0; t=0; tlen=q->character.length(); if(tlen next; } while(p character[t]==P[p]){ t++; p++; } else{ t=t-p+1; p=0; } } //cout<<"P="< =plen){ returnt-plen+1; } else{ line++; q=q->next; } } return-1; } voidTextEditor::DeleteText(strings) { Node*p=head; inti=1; intk=FindText(s); if(k==-1) cout<<"未出现该字符串!"<
next; //cout< character< character.erase(k-1,s.length()); cout<<"删除成功!"< character.length();i++){ if(p->character[i]>='0'&&p->character[i]<='9') NumberCount++; elseif(p->character[i]>'a'&&p->character[i]<'z'||p->character[i]>'A'&&p->character[i]<'Z') CharCount++; elseif(ispunct(p->character[i])) PunctuationCount++; elseif(p->character[i]=='') BlankCount++; } p=p->next; } } intmain() { inti,j,k,n=2; strings,t,name; TextEditortext; cout<<"---------------------------------------"< >n; getchar(); switch(n){ case1:cout<<"请输入字符:";getline(cin,s,'\n');text.AddText(s);break; case2:cout<<"请输入文档名字:";cin>>name;text.SetName(name);break; case3:cout< >i; cout<<"光标在第"< >j; cout<<"输入插入字符:"; getchar(); getline(cin,s); text.InsertText(text.SetCursor(i,j),s);break; } case6:{ cout<<"输入查找的字符串:"; getline(cin,s); intk=text.FindText(s); if(k==-1) cout<<"查找失败!"< character< next; } exit(0); break; } default:cout<<"输入错误,请重新输入!"< 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。