【C/C++】等分或指定行数把txt文档拆分成多份
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文档拆分成多份相关推荐
- EXCEL宏根据指定行数来切割excel文件内容成新文件
EXCEL宏根据指定行数来切割excel文件内容成新文件 宏内容 Sub splitexcel() Dim r, c, i, totalhangshu, fileshu, bt As Long App ...
- 怎么退出python命令行cd找到txt文档_《python怎么读取txt文件》
python怎么创建一个txt文件 python怎么创建txt文件的方法. 如下参考: 1.首用内置的空闲编辑器编辑(单击并选择copy),如下图所示. 2.您可以下载记事本和其他编辑软件,以支持多种 ...
- 如何读取不确定列数的txt文档?
在读取一个txt文档时,其中的列数不确定,我们如何遍历后面的元素? 用逗号隔开,一个一个元素遍历 代码示例: for content in contents:content_data = conten ...
- css3实现超出文本指定行数(指定文本长度)用省略号代替
测试代码: 1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta name="viewport" c ...
- VC编辑框(EDIT)的自动换行、自动滚屏 、到指定行数自动清空
From: http://getyoureyes.blog.163.com/blog/static/101716622201083081914305/ 经过多次测试,总结出VC编辑框(EDIT)的自动 ...
- Linux 查看文件指定行数 内容
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.tail date.log 输出文件末尾的内容,默认10行 tail ...
- php如何打出的正方形行列,javascript实现输出指定行数正方形图案的方法
本文实例讲述了javascript实现输出指定行数正方形图案的方法.分享给大家供大家参考.具体如下: javascript实现输出指定行数的正方形图案:点击生成图案,会有2个提示框,1,输入图案的组成 ...
- eclipse查找指定行数
ctrl+L 查找指定行数 转载于:https://www.cnblogs.com/songyunxinQQ529616136/p/6640734.html
- excel在每行下面添加插入指定行数的空白行方法步骤
描述:excel在每行下面添加指定行数的空白行方法步骤 步骤: 下载excel必备工具箱,并安装 下载地址:http://www.ahzll.top/ 菜单栏->工具箱->处理->间 ...
最新文章
- java中的builder模式
- 教你解决ChartDirector Linux下中文乱码
- qt5.6.3版本移植arm
- code.php验证码,php 验证码 实例
- BundleFusion那些事儿
- 279. 完全平方数(JavaScript)
- Android深入四大组件(五)Android8.0 根Activity启动过程(后篇)
- 麦迪逊大学计算机科学咋样,威斯康星大学麦迪逊分校
- transform对定位元素的影响
- ECMAScript——(二)
- 临床试验中的样本量估算---实践篇
- 删除服务器的文件夹,删除服务器上的文件夹
- NDB Cluster基本操作
- Android开发艺术探索 第一章 Activity的生命周期和启动模式
- docker2-镜像原理及创建新的镜像
- 云技术入门指导:什么是云计算技术,云技术用什么语言开发
- Visual Studio 匹配花括号的背景颜色
- 我的世界服务器显示未知指令,我的世界输入创造指令为什么显示未知指令
- 牛客小白月赛32--C消减整数、E春游(贪心)
- HtmlEncode是做什么的?
热门文章
- master slave mysql_Mysql---Master-slave复制方案 - dba成长之路
- 博客频道 - CSDN.NET
- android studio放置在函数上面看_Android中用Kotlin协程和Retrofit进行网络请求和取消请求...
- 来淄博旅游_JAVA
- 「深入Java」类型信息:RTTI和反射
- windows安装TortoiseGit详细使用教程【基础篇】
- 计算机视觉与模式识别国际期刊整理
- 程序员面试题精选100题(51)-顺时针打印矩阵[算法]
- Android开发之2048安卓版
- RANSAC算法做直线拟合
- 如何用Python实现八大排序算法