IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++行文本编辑器(英文) -> 正文阅读

[C++知识库]C++行文本编辑器(英文)

写得很简陋,保存在这里简单记录用

二、总体设计
1.以长串字符的拼接来完成间断性的文本储存。
2.在输入的间隙可以使用简单的文本操作,主要通过保存一个变量来储存当前位置。
3.在退出的时候需要同时保存已编入的文本
在这里插入图片描述

三、详细设计
(描述所有编写的类(建议使用类图),主要成员函数及其功能等;游戏主要功能的实现。成员函数的实现)
(1)类函数定义 class text

#include
#include
#include
#include
#include
using namespace std;
#define MAX 100000

static int point;//记录位置
static int number;
static int space;

class text
{
private:
char Data[MAX];
public:
text(){number=0;space=0;point=space;};
void Input();//输入
void Delete(int pos);//删除一个字符
void movef();//向后移动一个字符
void moveb();//向后移动一个字符
void jumpa(){point=1;menu();};//跳至最前
void jumpb(){point=space+1;menu();};
//跳至最后
void movefw();//向前移动一个单词
void movebw();//向后移动一个单词
void quit();//退出
void menu();//菜单
void print();//浏览全文
};

(2)主函数 main()
主要是设置一个text类,然后直接跳转菜单。
int main ()
{
text TEXT;
TEXT.menu();
}

(3)输入文本函数Input()
会首先输出已有字数,然后就可继续输入文本,同时为记录当前位置和字数。通过探测当前处于文本的那一个位置决定是“后插”还是“中间插入”,由于在ASCII编码中32~47是标点符号和空格,所以一次判断是否多了个单词。
void text::Input()
{
int o,i;
cout<<“word number:”<<number<<endl;
for(i=0;i<space;i++)
cout<<Data[i];
cout<<endl;
cout<<“please input:”;
char ss[100];//=new string(1000);
getchar();
gets(ss);
string sss(ss);
if(point==space)
{
space+=sss.length();
for(i=0;i<sss.length();i++)
Data[point+i]=sss[i];
point=space;
}
else
{
for(int j=space+(int)sss.length()+1,k=space;k>point-1;j–,k–)
Data[j]=Data[k];
Data[point]=’ ‘;
for(i=0,o=point+1;i<sss.length();i++,o++)
Data[o]=sss[i];
space+=sss.length();
point=point+(int)sss.length();
}
for(i=0;sss[i]!=’\0’;i++)
{

     if(sss[i]>32&&sss[i]<=47){
        number++;
    }
}
number++;
space++;
menu();

}

(4)删除一个字符:Delete(int pos)
在当前位置删除一个字符。
void text::Delete(int pos){
while(pos<=space){
Data[pos-1]=Data[pos];
pos++;
}
point–;
space–;
menu();
}

(5)向前(后)移动一个字符位置void movef(); void moveb();
void movef(){
point–;
menu();
};

void moveb(){
    if(point!=space)
        point+=2;//由于point++是到了下一个字符的位置,但是向后移动一个字符是要跳过一个字符,所以point+=2
    else
        cout<<"eorro!"<<endl;
    menu();
};

(6)跳至最前(后)void jumpa(); void jumpb();
void jumpa(){
point=0;
menu();
};
void jumpb(){
point=space+1;
menu();
};

(7)向前(后)移动一个单词位置 void movefw(); void movebw();
ASCII编码中32~47是标点符号和空格,所以以此判断是否到了下一个单词。
void text::movefw(){
while(!(Data[point] > =32&&Data[point] < =47)) {
point–;
}
menu();
}

void text::movebw(){
point++;
while(!(Data[point] > =32&&Data[point] < =47)){
point++;
}
point++;
menu();
}

(8)退出并保存至文件quit()
void text::quit()
{
cout<<“Already exited and preserve”<<endl;
fstream fout("/Users/carry/Desktop/1.txt",ios::out);
// 如果创建成功
for(int i=0;i<space;i++)
fout<<Data[i]; // 使用与cout同样的方式进行写入
fout.close(); // 执行完操作后关闭文件句柄
exit(0);
};

(9)浏览全文 void print()
输出全文,同时输出字数。
void print()
{
for(int i=0;i<space;i++)
cout<<Data[i];
cout<<endl;
cout<<“word number:”<<number<<endl;
menu();
}

四、程序运行结果测试与分析
1.输入一句话并删除一个字符
2.跳至最前又输入一句话
3.调至最后继续输入一句话
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.向前移动一个字符输入“one”
2.浏览全文
3.向后移动一个字符输入“two”
4.浏览全文

在这里插入图片描述
在这里插入图片描述

1.向前移动一个单词,输入“three”
2.向后移动一个单词,输入“four”
3.浏览全文
在这里插入图片描述
在这里插入图片描述

1.选择退出并保存
2.可在桌面查看已经保存的文件1.txt
在这里插入图片描述
在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 10:37:50  更:2021-08-02 10:39:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/9 18:16:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码