📄 functions.cpp
字号:
#include<fstream>
#include"functions.hpp"
//打印字符串str到屏幕,参数采用字符指针.
bool PRINT_func(char* str)
{
cout<<str<<endl;
return true;
}
//描述F过程,具体内容参考实验指导书
//第一参数为string类型迭代器的引用,用以带回对主调函数迭代器的修改
//第二参数为int类型的用以,用以带回对主调函数出错标志的修改
bool F_func(string::const_iterator& F_current,int& F_flag)
{
if(*F_current>='a' && *F_current<='z')
{
++F_current;
return true;
}
else
if(*F_current!='(')
{
PRINT_func("ERROR");
F_flag=1;
return true;
}
else
{
++F_current;
E_func(F_current,F_flag);
if(*F_current!=')')
{
PRINT_func("ERROR");
F_flag=1;
return true;
}
else
{
++F_current;
return true;
}
}
}
//描述T过程,具体内容参考实验指导书
//参数功能同上
bool T_func(string::const_iterator& T_current,int& T_flag)
{
F_func(T_current,T_flag);
while(*T_current=='*' || *T_current=='/')
{
++T_current;
F_func(T_current,T_flag);
}
return true;
}
//描述E过程,具体内容参考实验指导书
//参数功能同上
bool E_func(string::const_iterator& E_current,int& E_flag)
{
T_func(E_current,E_flag);
while(*E_current=='+' || *E_current=='-')
{
++E_current;
T_func(E_current,E_flag);
}
return true;
}
//描述ZC过程,具体内容参考实验指导书
//第一参数为当前位置,刚开始时即obj.begin()
//第二参数为结束位置即obj.end()
bool ZC_func(string::const_iterator& ZC_current,const string::const_iterator& ZC_end)
{
int ZC_flag=int();
while(ZC_current!=ZC_end)
{
E_func(ZC_current,ZC_flag);
if(*ZC_current!=';' || ZC_flag==1)
{
PRINT_func("ERROR,AGAIN");
ZC_flag=0;
++ZC_current;
}
else
{
PRINT_func("RIGHT,AGAIN");
++ZC_current;
}
}
return true;
}
//从文件中读出所有字符到对象object中,同时去掉所有的空格和换行
//参数采用引用,以便将结果带回主调函数.
bool GetTextFromFile(string& object)
{
//定义字符数组并初始化为'\0',用作临时存储空间
char ch[50]={'\0'};
//定义整形变量并初始化为0,用作字符数组下标
int i=int();
//定义ifstream类型对象readfile,用以只读方式打开文件
ifstream readfile("test.txt",ios::in);
//测试能否成功打开文件
if(!readfile)
{
cerr<<"can't open test.txt!"<<endl;
return false;
}
//调用成员函数getline()完成读入字符到字符数组ch[50]
readfile.getline(ch,49,EOF);
//去掉字符数组ch[]中所有空格和换行,同时依次逐个追加到string类型对象object中
//while语句判断是否还有字符
while(ch[i]!='\0')
{
//if语句完成去掉空格和换行
if(!(ch[i]==' ' || ch[i]=='\n'))
//调用成员函数完成字符追加,第二参数为待加入字符,类型为char
//第一参数表明第二参数追加的次数
object.append(1,ch[i]);
++i;
}
//调用成员函数close()用以关闭文件
readfile.close();
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -