用C++做的文本分割器

6033290 

//*****************************************************************************************************
// 程 序 名:C++文本分割
// 作    者:王哲超
// 编程时间:2009年8月2日
// 主要功能:分割文本
//*****************************************************************************************************
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
#include<string.h>//编译命令
int main()
{    //主函数开始
	char filename[100], line,count[5]="_000",suffix[5]=".txt",outfilename[150];
	double N=0,n=0,j;//定义变量
	int i,len;
	ifstream infile;//定义一个输入流对象infile
	cout<<"请输入要切割的文档文件名:";//提示信息
	cin.getline(filename,100);//输入文件名(含空格)
	len=strlen(filename);
	if(filename[len-1]!='t' || filename[len-2]!='x' || filename[len-3]!='t' || filename[len-4]!='.')
	{
		strcat(filename,suffix);//如果没有后缀名的加上后缀名
	}
	infile.open(filename,ios::in|ios::nocreate);//打开名字为filename的文档文件
	if(!infile)//如果在当前目录下不存在,输出错误,并退出
	{
		cout<<"系统错误,请确定文件是否存在!!!请重试!"<<endl;
		system("PAUSE");//屏幕暂停
		exit(1);//退出
	}
	cout<<"提取文件中,请稍等……"<<endl;//输入提示信息
	while(infile>>line)//循环计算文本的字节数
	{
		N++;//数数
	}
	infile.close();//关闭文件

	//--------------------↑计算原文本字节数↑-----------------------------------------------

	system("CLS");//清屏命令
	cout<<"检查完毕……"<<endl;
	cout<<"请输入要将文档平均切割的数量(最多为1000):";//提示信息
	cin>>n;//输入切割数量
	infile.open(filename,ios::in|ios::nocreate);//在将原来的文本打开
	if(!infile)//如果在当前目录下不存在,输出错误,并退出
	{
		cout<<"系统错误,请确定文件是否存在!!!请重试!"<<endl;
		system("PAUSE");//屏幕暂停
		exit(2);//退出
	}
	
	for(i=0;i<n;i++)//控制输出文档的个数
	{
		j=0;//计算字节数
	//-------------------------↓修改切割文本改名称↓------------------------------------------
		strcpy(outfilename,filename);//拷贝原文件名
		count[3]=char(i%10+'0');
		count[2]=char(i/10%10+'0');
		count[1]=char(i/100%10+'0');
		strcat(outfilename,count);//加上个数
		strcat(outfilename,suffix);//加上后缀
	//--------------------------↑修改切割文本改名称↑-----------------------------------------
		fstream outfile(outfilename,ios::out);//创建输出流,建立名字为outfilename的文件
		if(!outfile)
		{
			cout<<"系统错误!请重试!"<<endl;
			system("PAUSE");
			exit(3);
		}
		while(j<=N/n && infile.get(line))//循环从filename的文档文件读取字符
		{
			j++;
			outfile<<line;//将它在随着输出流输入新建的outfilename文件
		}
		outfile.close();//关闭新建文件
	}
	infile.close();//关闭原文件
	cerr<<"\n……恭喜恭喜恭喜O(∩_∩)O文件切割完成O(∩_∩)O恭喜恭喜恭喜……\n\n";//输出提示
	system("PAUSE");
	return 0;
}

posted on 2010-02-24 13:32  W_Z_C  阅读(333)  评论(0)    收藏  举报

导航