资源简介
经典的字符串处理问题 KWIC c++版,实现了管道风格,调用返回风格还有OOP风格
代码片段和文件信息
#include “CallReturnstyle.h“
#include
#include
#include
using namespace std;
extern FILE *g_std;
extern FILE *g_foutput;
//KWIC链表头
KWICItem *g_listhead = NULL;
/*
* IsNoisyCh - 判断是否为噪音字符
* @ch 要判断的字符
*
* 判断@ch字符是否为噪音字符
*/
bool IsNoisyCh(char ch)
{
if(ch == ‘ ‘ || ch == ‘\t‘
|| ch == ‘\n‘ || ch == ‘\0‘
|| ch == ‘‘ || ch == ‘!‘
|| ch == ‘?‘ || ch == ‘;‘)
return true;
else
return false;
}
/**
* GetNextLine - 获取文件中的下一行字符串
* @source: 源文件指针
* @line: 把所获取的字符串保存到line中
*
* 获取@source文件中的下一行字符串到@line
*
*/
bool GetNextLine(FILE *sourcechar line[])
{
//如果文件指针无效或字符串指针无效则返回
if(source == NULL || line == NULL)
{
return false;
}
//如果文件指针有效则读取一行字符到line中
int ch; //临时字符
int n; //已保存到的字符数
n = 0;
//循环读取一个字符直到遇到换行符
while((ch = fgetc(source)) != EOF && ch != ‘\n‘)
{
line[n++] = ch; //保存字符
}
line[n] = ‘\0‘; //给字符串打结
if(ch == EOF)
return false;
else
return true;
}
/*
*
* LoadFromFile - 从文件中读取每一行字符串到链表中
* @source 文件指针
*
*
*
*/
void LoadFromFile(char filename[])
{
FILE *source = fopen(filename“r“);
if(source == NULL)
return ;
int ch; //临时字符
int n = 0; //已保存到的字符数
KWICItem *temp = NULL;
KWICItem *g_listpos = NULL;
if(g_listhead == NULL)
{
g_listhead = temp = new KWICItem;
memset(temp->lines0MAX_LINES*MAX_COUNT);
temp->linecount = 1;
temp->next = NULL;
g_listpos = temp;
}
//循环读取一个字符直到遇到换行符
while((ch = fgetc(source)) != EOF )
{
if(ch != ‘\n‘)
{
temp->lines[0][n++] = ch; //保存字符
}
else
{
temp->lines[0][n] = ‘\0‘; //给字符串打结
g_listpos->next = temp;
g_listpos = temp;
temp = new KWICItem;
memset(temp->lines0MAX_LINES*MAX_COUNT);
temp->linecount = 1;
temp->next = NULL;
n=0;
}
}
g_listpos->next = temp;
g_listpos = temp;
g_listpos->lines[0][n] = ‘\0‘;
g_listpos->next = NULL;
if(temp)
{
// delete temp;
// temp = NULL;
}
fclose(source);
}
void PreProcess(char line[])
{
int len = strlen(line);
//除去后面的噪音字符
int j = len - 1;
while(j>0 && IsNoisyCh(j)) j--;
line[j] = ‘\0‘;
//除去前面的噪音字符
int startindex = 0;
//查找从开始位置到第一个不是噪音字符的位置
while(IsNoisyCh(line[startindex])) startindex++;
j = 0;
while(line[j+startindex]!=‘\0‘)
{
line[j] = line[j+startindex];
j++;
}
line[j] = ‘\0‘;
//除去中间多余的噪音字符
j = 0;
char *temp = (char*)malloc(len + 1);
for(int i=0; line[i]!=‘\0‘; i++)
{
if(!IsNoisyCh(temp[j-1]) && ((IsNoisyCh(line[i]) && IsNoisyCh(line[i+1]))
|| (IsNoisyCh(line[i]) && !IsNoisyCh(line[i+1]))))
{
temp[j++] = ‘ ‘;
}
else if(!IsNoisyCh(line[i]))
{
temp[j++] = line[i];
}
}
temp[j] = ‘\0‘;
strcpy(linetemp);
free(temp);
//下面的算法是不用其他的空间,不过这样就要进行许多移位操作,时间代价比较高
/*int i = 0;
while(line[i]!=‘\0‘)
{
if(IsNoi
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 196462 2009-04-06 20:28 KWIC\EXE\CallReturnst
文件 360448 2009-04-06 20:16 KWIC\EXE\KWIC.exe
文件 200037 2009-04-06 20:31 KWIC\EXE\oopst
文件 196462 2009-04-06 20:25 KWIC\EXE\pipest
文件 16351 2009-04-01 23:07 KWIC\EXE\TDP.txt
文件 1055 2009-04-06 20:53 KWIC\EXE\运行时间统计.txt
文件 6299 2009-04-06 20:11 KWIC\SRC\KWIC\CallReturnst
文件 1043 2009-04-06 20:00 KWIC\SRC\KWIC\CallReturnst
文件 2903 2009-04-06 20:16 KWIC\SRC\KWIC\Debug\BuildLog.htm
文件 22587 2009-04-06 20:11 KWIC\SRC\KWIC\Debug\CallReturnst
文件 196462 2009-04-06 20:28 KWIC\SRC\KWIC\Debug\CallReturnst
文件 2405372 2009-04-06 20:16 KWIC\SRC\KWIC\Debug\KWIC.ilk
文件 92074 2009-04-06 20:00 KWIC\SRC\KWIC\Debug\KWIC.obj
文件 3342336 2009-04-04 00:42 KWIC\SRC\KWIC\Debug\KWIC.pch
文件 2173952 2009-04-06 20:16 KWIC\SRC\KWIC\Debug\KWIC.pdb
文件 716393 2009-04-06 20:16 KWIC\SRC\KWIC\Debug\OOPst
文件 200037 2009-04-06 20:31 KWIC\SRC\KWIC\Debug\oopst
文件 12204 2009-04-06 20:00 KWIC\SRC\KWIC\Debug\Pipest
文件 196462 2009-04-06 20:25 KWIC\SRC\KWIC\Debug\pipest
文件 15178 2009-04-04 00:42 KWIC\SRC\KWIC\Debug\stdafx.obj
文件 16351 2009-04-01 23:07 KWIC\SRC\KWIC\Debug\TDP.txt
文件 461824 2009-04-06 20:16 KWIC\SRC\KWIC\Debug\vc70.idb
文件 217088 2009-04-06 20:16 KWIC\SRC\KWIC\Debug\vc70.pdb
文件 1055 2009-04-06 20:53 KWIC\SRC\KWIC\Debug\运行时间统计.txt
文件 4451 2009-04-06 12:50 KWIC\SRC\KWIC\KWIC.cpp
文件 133 2009-04-02 23:45 KWIC\SRC\KWIC\KWIC.txt
文件 4172 2009-04-04 00:42 KWIC\SRC\KWIC\KWIC.vcproj
文件 4776 2009-04-06 20:16 KWIC\SRC\KWIC\OOPst
文件 664 2009-04-06 19:56 KWIC\SRC\KWIC\OOPst
文件 200037 2009-04-06 20:16 KWIC\SRC\KWIC\oopst
............此处省略17个文件信息
相关资源
- 基于VC++实现的人脸检测
- Sams Teach Yourself C++ in One Hour a Day (8
- 卷积神经网络代码c++
- 用c++编写的打气球的游戏,用MFC实现
- C++解多元一次方程组的代码
- win32 VC++ 合并 exe 和 Dll..
- 谷歌C++编码规范-中文 2018-03-30 最新版
- C++ 图形界面 实现文本编辑框输入同步
- C++ 橡皮筋技术画矩形
- VC计算器,完整的案例,适合MFC和VC
- 老何炸飞机源代码
- VC++小游戏 弹球游戏
- jpeg jpg解码 C++
- VC++6.0番茄西红柿助手VAXvirsual assist
- C++ 实现ping代码
- c++与Qt串口通讯
- Hash算法之SHA1实现c++
- 龚建伟MFC串口通信
- 网络嗅探器源代码--C++
- VC++/MFC扫雷源代码
- boost c++ application development cookbook 2nd
- C++课程设计贪吃蛇源码+课设报告
- C++程序发送邮件可带附件
- C++程序设计题解与上机指导.pdf
- C++的pb_ds库在OI中的应用.pdf )
- VC++上位机API编程转
- C++图书管理系统包括源码,论文,以
- C++ 写的串口通信 DLL文件
- ECOS求解器求解二阶锥问题C语言程序
- 五子棋mfc,带ai,附教程
评论
共有 条评论