当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

用C++做的文本分割器

 /********************************************************
#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;
}

    【运行结果】

   

运行结果

相关内容
赞助商链接