📄 scanword.cpp
字号:
#include "ScanWord.h"
#include "PreInput.h"
#include "ShareData.h"
#include "Display.h"
#include <iostream>
#include <string>
using namespace std;
void CScanWord::Sword()
{
i=0;
CPreInput input;
input.OpenSource(); //打开文件
fileline = input.ReadFile();//读取一行
while (fileline[0]!='#')
{
while (fileline[i]!=';')
{
i = InWord();//读单词函数
}
i=0;
fileline = input.ReadFile();
}
}
int CScanWord::InWord()
{
CDisplay display;
twoyuan lettermod;
letter = fileline[i];
if ((letter > 96 && letter < 123)||(letter > 64 && letter < 91)) //字符为字母
type = 1;
else if (letter > 47 && letter < 58)//字符为数字
type = 2;
else if ((letter > 39 && letter < 48) || (letter > 57 && letter < 63))//字符为运算符或逻辑符
type = 3;
else
type = 4;
switch (type)
{
case 1:
while ((fileline[i]!=';' && fileline[i]!=' ') && ((fileline[i] > 96 && fileline[i] < 123)||(fileline[i] > 64 && fileline[i] < 91)) || (fileline[i] > 47 && fileline[i] < 58))
{
letter = fileline[i];
//cout << letter;
lettermod.str = lettermod.str+letter;
i++;
}
//cout << lettermod.str;
while(fileline[i]==' ')
i++;
if (lettermod.str==lettertable[0].str)
{
lettermod.code = 1;
display.Display(lettermod.str,lettermod.code);
}
else if (lettermod.str==lettertable[1].str)
{
lettermod.code = 2;
display.Display(lettermod.str,lettermod.code);
}
else if (lettermod.str==lettertable[2].str)
{
lettermod.code = 3;
display.Display(lettermod.str,lettermod.code);
}
else if (lettermod.str==lettertable[3].str)
{
lettermod.code = 4;
display.Display(lettermod.str,lettermod.code);
}
else if (lettermod.str==lettertable[4].str)
{
lettermod.code = 5;
display.Display(lettermod.str,lettermod.code);
}
else if (lettermod.str==lettertable[5].str)
{
lettermod.code = 6;
display.Display(lettermod.str,lettermod.code);
}
else if (lettermod.str==lettertable[6].str)
{
lettermod.code = 7;
display.Display(lettermod.str,lettermod.code);
}
else if (lettermod.str==lettertable[7].str)
{
lettermod.code = 8;
display.Display(lettermod.str,lettermod.code);
}
else if (lettermod.str==lettertable[8].str)
{
lettermod.code = 9;
display.Display(lettermod.str,lettermod.code);
}
else if (lettermod.str==lettertable[9].str)
{
lettermod.code = 10;
display.Display(lettermod.str,lettermod.code);
}
else if (lettermod.str==lettertable[10].str)
{
lettermod.code = 11;
display.Display(lettermod.str,lettermod.code);
}
else if (lettermod.str==lettertable[11].str)
{
lettermod.code = 12;
display.Display(lettermod.str,lettermod.code);
}
else if (lettermod.str==lettertable[12].str)
{
lettermod.code = 13;
display.Display(lettermod.str,lettermod.code);
}
else if (lettermod.str==lettertable[13].str)
{
lettermod.code = 14;
display.Display(lettermod.str,lettermod.code);
}
else if (lettermod.str==lettertable[14].str)
{
lettermod.code = 15;
display.Display(lettermod.str,lettermod.code);
}
else if (lettermod.str==lettertable[15].str)
{
lettermod.code = 16;
display.Display(lettermod.str,lettermod.code);
}
else
{
lettermod.code = 17;
display.Display(lettermod.str,lettermod.code);
}
cout << "\n";
break;
case 2:
lettermod.code = 18;
while (fileline[i]!=';' && (fileline[i] > 47 && fileline[i] < 58))
{
letter = fileline[i];
//cout << letter;
lettermod.str = lettermod.str+letter;
i++;
}
while(fileline[i]==' ')
i++;
display.Display(lettermod.str,lettermod.code);
cout << "\n";
break;
case 3:
if (lettertable[18].word==fileline[i]) //+
{
lettermod.code = 19;
lettermod.str = lettertable[18].word;
i++;
}
else if(lettertable[19].word==fileline[i]) //-
{
lettermod.code = 20;
lettermod.str = lettertable[19].word;
i++;
}
else if (lettertable[20].word==fileline[i]) //*
{
lettermod.code = 21;
lettermod.str = lettertable[20].word;
i++;
}
else if (lettertable[21].word==fileline[i]) // /
{
if (fileline[i+1]=='n')
{
lettermod.code = 35;
lettermod.str = lettertable[21].word;
lettermod.str = lettermod.str+"n";
i = i+2;
}
lettermod.code = 22;
lettermod.str = lettertable[21].word;
i++;
}
else if (lettertable[22].word==fileline[i]) //:=
{
if (lettertable[23].word==fileline[i+1])
{
lettermod.code = 23;
lettermod.str = lettertable[22].word;
lettermod.str = lettermod.str+lettertable[23].word;
i = i+2;
}
else
{
i++;
cout << "error";
}
}
else if (lettertable[23].word==fileline[i]) //=
{
lettermod.code = 24;
lettermod.str = lettertable[23].word;
i++;
}
else if (lettertable[25].word==fileline[i])//<,<=,<>
{
if (lettertable[24].word==fileline[i+1])
{
lettermod.code = 25;
lettermod.str = lettertable[25].word;
lettermod.str = lettermod.str+lettertable[24].word;
i = i+2;
}
else if (lettertable[23].word==fileline[i+1])
{
lettermod.code = 29;
lettermod.str = lettertable[25].word;
lettermod.str = lettermod.str+lettertable[23].word;
i = i+2;
}
else
{
lettermod.code = 28;
lettermod.str = lettertable[25].word;
i++;
}
}
else if (lettertable[24].word==fileline[i])//>=,>
{
if (lettertable[23].word==fileline[i+1])
{
lettermod.code = 27;
lettermod.str = lettertable[24].word;
lettermod.str = lettermod.str+lettertable[23].word;
i = i+2;
}
else
{
lettermod.code = 26;
lettermod.str = lettertable[24].word;
i++;
}
}
else if (lettertable[26].word==fileline[i]) //(
{
lettermod.code = 30;
lettermod.str = lettertable[26].word;
i++;
}
else if (lettertable[27].word==fileline[i]) //)
{
lettermod.code = 31;
lettermod.str = lettertable[27].word;
i++;
}
else if (lettertable[28].word==fileline[i])//,
{
lettermod.code = 32;
lettermod.str = lettertable[28].word;
i++;
}
else if (lettertable[30].word==fileline[i])//.
{
lettermod.code = 34;
lettermod.str = lettertable[30].word;
i++;
}
while(fileline[i]==' ')
i++;
display.Display(lettermod.str,lettermod.code);
cout << "\n";
break;
default:
if (fileline[i]==' '|| fileline[i]==' ')
{
while(fileline[i]==' '|| fileline[i]==' ')
i++;
}
else
{
cout << "非法字符!\n";
i++;
}
}
return i;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -