1、输入如下:

2、执行代码:

3、输出如下:

4、代码如下:

4.1、平均拆分代码


#include <iostream>
#include <string>
#include <fstream>using namespace std;//待处理样本的路径
#define  TXT_PATH_NAME    "..\\Inputs\\List.txt"void getTxtPartName (char *partName, string txtPathName) ;int main()
{//统计txt中的总行数ifstream countSamplesNum(TXT_PATH_NAME);string samplesPathName;int samplesNum = 0;         //txt中的总行数int splitNum = 0;           //计划拆分的份数int averageSamplesNum = 0;  //平均每份的行数int remainder = 0;          //余数//循环读取txt的各行while (1) {if (!getline(countSamplesNum,samplesPathName)) {break;}if (samplesPathName.empty()) {continue; }samplesNum++;}cout<<"输入txt的总行数:"<<samplesNum<<endl;cout<<"请输入拆分数量:";cin>>splitNum;averageSamplesNum = samplesNum/splitNum;remainder = samplesNum%splitNum;char  dispParams[1024];   //读入原文件的名字char saveNameExt[1024];   //保存新文件的名字,源文件加数字getTxtPartName(dispParams, TXT_PATH_NAME);   //从输入txt的路径获取txt文件名if (remainder) //不能整除{cout<<endl<<endl<<"拆分结果如下:"<<endl<<"前"<<(splitNum-1)<<"份的行数为:"<<averageSamplesNum<<",   最后1份的行数为:"<<(samplesNum - averageSamplesNum*(splitNum-1))<<endl<<endl;}else   //可以整除{cout<<endl<<endl<<"拆分结果如下:"<<endl<<splitNum<<"份的行数均为:"<<averageSamplesNum<<endl<<endl;}//实现拆分,文件保存ifstream totalSamplesPath(TXT_PATH_NAME);string singleSamplesPath;for (int i=0; i<splitNum-1; i++){sprintf(saveNameExt, "%s_%d.txt", dispParams, i);FILE *labelfilename = fopen(saveNameExt, "w+t");for (int j=0; j<averageSamplesNum; j++){getline(totalSamplesPath, singleSamplesPath);const char* ch=singleSamplesPath.c_str();if (j==0){fprintf(labelfilename, "%s", ch);} else {fprintf(labelfilename, "\n%s", ch);}}fclose(labelfilename);}//保存最后1份sprintf(saveNameExt, "%s_%d.txt", dispParams, (splitNum-1));FILE *labelfilename = fopen(saveNameExt, "w+t");int flg = 0;while (getline(totalSamplesPath, singleSamplesPath)){const char* ch=singleSamplesPath.c_str();if (0 == flg){fprintf(labelfilename, "%s", ch);}else{fprintf(labelfilename, "\n%s", ch);}flg++;}fclose(labelfilename);system("pause");return 0;
}//从txtPathName截取最后一个“\\”后与“.”之前的部分名称
void getTxtPartName (char *partName, string txtPathName)
{char tmpChar1[1024]={'0',};char tmpChar2[1024]={'0',};strcpy(tmpChar1, txtPathName.c_str());int pathNameLen = strlen(tmpChar1); int pos = pathNameLen; while (pos > 0) {pos--; if (tmpChar1[pos] == '\\') {pos++; break;} }memcpy(tmpChar2, tmpChar1 + pos, pathNameLen-pos); pos = strlen(tmpChar2); while (pos > 0) {if (tmpChar2[pos] == '.') break; pos--; }tmpChar2[pos] = 0; sprintf(partName, "%s", tmpChar2);
}

4.2、指定行数拆分代码


#include <iostream>
#include <string>
#include <fstream>using namespace std;//待处理样本的路径
#define  TXT_PATH_NAME    "..\\Inputs\\List.txt"void getTxtPartName (char *partName, string txtPathName) ;int main()
{//统计txt中的总行数ifstream countSamplesNum(TXT_PATH_NAME);string samplesPathName;int eachSplitGroupLineNum[100];  //保存各份的行数int samplesNum = 0;              //txt中的总行数int splitNum = 0;                //计划拆分的份数//循环读取txt的各行while (1) {if (!getline(countSamplesNum,samplesPathName)) {break;}if (samplesPathName.empty()) {continue; }samplesNum++;}cout<<"输入txt的总行数:"<<samplesNum<<endl;cout<<"请输入拆分数量:";cin>>splitNum;cout<<endl<<endl<<"请依次输入"<<splitNum<<"份的行数:"<<endl;for (int i=0; i<splitNum; i++){cin>>eachSplitGroupLineNum[i];}cout<<endl<<endl;char  dispParams[1024];   //读入原文件的名字char saveNameExt[1024];   //保存新文件的名字,源文件加数字getTxtPartName(dispParams, TXT_PATH_NAME);   //从输入txt的路径获取txt文件名//实现拆分,文件保存ifstream totalSamplesPath(TXT_PATH_NAME);string singleSamplesPath;for (int i=0; i<splitNum; i++){sprintf(saveNameExt, "%s_%d.txt", dispParams, i);FILE *labelfilename = fopen(saveNameExt, "w+t");for (int j=0; j<eachSplitGroupLineNum[i]; j++){getline(totalSamplesPath, singleSamplesPath);const char* ch=singleSamplesPath.c_str();if (j==0){fprintf(labelfilename, "%s", ch);} else {fprintf(labelfilename, "\n%s", ch);}}fclose(labelfilename);}system("pause");return 0;
}//从txtPathName截取最后一个“\\”后与“.”之前的部分名称
void getTxtPartName (char *partName, string txtPathName)
{char tmpChar1[1024]={'0',};char tmpChar2[1024]={'0',};strcpy(tmpChar1, txtPathName.c_str());int pathNameLen = strlen(tmpChar1); int pos = pathNameLen; while (pos > 0) {pos--; if (tmpChar1[pos] == '\\') {pos++; break;} }memcpy(tmpChar2, tmpChar1 + pos, pathNameLen-pos); pos = strlen(tmpChar2); while (pos > 0) {if (tmpChar2[pos] == '.') break; pos--; }tmpChar2[pos] = 0; sprintf(partName, "%s", tmpChar2);
}

【C/C++】等分或指定行数把txt文档拆分成多份相关推荐

  1. EXCEL宏根据指定行数来切割excel文件内容成新文件

    EXCEL宏根据指定行数来切割excel文件内容成新文件 宏内容 Sub splitexcel() Dim r, c, i, totalhangshu, fileshu, bt As Long App ...

  2. 怎么退出python命令行cd找到txt文档_《python怎么读取txt文件》

    python怎么创建一个txt文件 python怎么创建txt文件的方法. 如下参考: 1.首用内置的空闲编辑器编辑(单击并选择copy),如下图所示. 2.您可以下载记事本和其他编辑软件,以支持多种 ...

  3. 如何读取不确定列数的txt文档?

    在读取一个txt文档时,其中的列数不确定,我们如何遍历后面的元素? 用逗号隔开,一个一个元素遍历 代码示例: for content in contents:content_data = conten ...

  4. css3实现超出文本指定行数(指定文本长度)用省略号代替

    测试代码: 1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta name="viewport" c ...

  5. VC编辑框(EDIT)的自动换行、自动滚屏 、到指定行数自动清空

    From: http://getyoureyes.blog.163.com/blog/static/101716622201083081914305/ 经过多次测试,总结出VC编辑框(EDIT)的自动 ...

  6. Linux 查看文件指定行数 内容

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.tail date.log               输出文件末尾的内容,默认10行 tail ...

  7. php如何打出的正方形行列,javascript实现输出指定行数正方形图案的方法

    本文实例讲述了javascript实现输出指定行数正方形图案的方法.分享给大家供大家参考.具体如下: javascript实现输出指定行数的正方形图案:点击生成图案,会有2个提示框,1,输入图案的组成 ...

  8. eclipse查找指定行数

    ctrl+L 查找指定行数 转载于:https://www.cnblogs.com/songyunxinQQ529616136/p/6640734.html

  9. excel在每行下面添加插入指定行数的空白行方法步骤

    描述:excel在每行下面添加指定行数的空白行方法步骤 步骤: 下载excel必备工具箱,并安装 下载地址:http://www.ahzll.top/ 菜单栏->工具箱->处理->间 ...

最新文章

  1. java中的builder模式
  2. 教你解决ChartDirector Linux下中文乱码
  3. qt5.6.3版本移植arm
  4. code.php验证码,php 验证码 实例
  5. BundleFusion那些事儿
  6. 279. 完全平方数(JavaScript)
  7. Android深入四大组件(五)Android8.0 根Activity启动过程(后篇)
  8. 麦迪逊大学计算机科学咋样,威斯康星大学麦迪逊分校
  9. transform对定位元素的影响
  10. ECMAScript——(二)
  11. 临床试验中的样本量估算---实践篇
  12. 删除服务器的文件夹,删除服务器上的文件夹
  13. NDB Cluster基本操作
  14. Android开发艺术探索 第一章 Activity的生命周期和启动模式
  15. docker2-镜像原理及创建新的镜像
  16. 云技术入门指导:什么是云计算技术,云技术用什么语言开发
  17. Visual Studio 匹配花括号的背景颜色
  18. 我的世界服务器显示未知指令,我的世界输入创造指令为什么显示未知指令
  19. 牛客小白月赛32--C消减整数、E春游(贪心)
  20. HtmlEncode是做什么的?

热门文章

  1. master slave mysql_Mysql---Master-slave复制方案 - dba成长之路 - 博客频道 - CSDN.NET
  2. android studio放置在函数上面看_Android中用Kotlin协程和Retrofit进行网络请求和取消请求...
  3. 来淄博旅游_JAVA
  4. 「深入Java」类型信息:RTTI和反射
  5. windows安装TortoiseGit详细使用教程【基础篇】
  6. 计算机视觉与模式识别国际期刊整理
  7. 程序员面试题精选100题(51)-顺时针打印矩阵[算法]
  8. Android开发之2048安卓版
  9. RANSAC算法做直线拟合
  10. 如何用Python实现八大排序算法