日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

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

發布時間:2025/3/21 c/c++ 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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文档拆分成多份的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品亚洲一区二区 | 好吊色av| 日本不卡一区二区 | 91福利影院 | 熟女人妻aⅴ一区二区三区60路 | 另类欧美尿交 | 天天免费视频 | 欧美成人一区二区三区片免费 | 九九热国产精品视频 | 国产一及毛片 | 91av视频网站 | 九色精品在线 | 精精国产xxxx视频在线 | 暗呦丨小u女国产精品 | 久久全国免费视频 | 成年人视频在线免费看 | 91爱爱网站 | 美女人人操 | 亚洲va在线 | 成人特级毛片 | 中国美女一级看片 | 老湿影院av| 色呦呦在线看 | 国产大片91 | 豆花视频在线播放 | 欧亚一级片 | 久久久av一区二区三区 | 新红楼梦2005锦江版高清在线观看 | 国产精品入口夜色视频大尺度 | 国产人成无码视频在线观看 | 蜜臀av性久久久久蜜臀av麻豆 | 亚洲三级色| 日韩在线电影一区二区 | 中文字幕丰满孑伦无码专区 | 国产一区二区三区影视 | 国产福利在线观看 | 免看黄大片aa | 网站免费黄色 | 欧美久久久精品 | av毛片在线看 | www黄色com| 自拍偷拍亚洲欧洲 | 久久资源在线 | 国产深喉视频一区二区 | 日韩精品一区二区三区无码专区 | 日本五十路在线 | 99国产精品国产免费观看 | 久草在在线 | 国产视频二区 | 在线观看超碰 | 天天舔天天干天天操 | 日韩深夜视频 | 亚洲一区二区视频 | 欧美三区 | 亚洲一区欧美激情 | 亚洲欧美另类中文字幕 | 中文字幕欧美专区 | 极品色av | 91精品久久久久久久久中文字幕 | 中文字幕精品无码亚 | 国产丰满美女做爰 | www.四虎com | 哪个网站可以看毛片 | 日韩在线电影一区 | 99福利视频导航 | 欧美精品乱码久久久久久按摩 | 天天操夜夜添 | 国产精品中文久久久久久 | 日本一区视频在线观看 | 怡红院男人的天堂 | 影音先锋中文字幕一区二区 | 欧美一级黑人 | 久久亚洲熟女cc98cm | 99色网 | 黄色片亚洲 | 亚洲综合小说 | 午夜视频免费观看 | 亚洲成人伦理 | 他趴在我两腿中间添得好爽在线看 | 午夜精品视频一区 | 亚洲91精品| 激情九月婷婷 | 亚洲 欧美 变态 另类 综合 | a级一片 | 狠狠狠狠干| 国产二区自拍 | 亚洲性欧美色 | 日韩亚洲视频在线观看 | 黄色高潮 | 日韩欧美麻豆 | 涩涩涩999| 黄页网站视频 | 国产女人在线观看 | 91丨九色丨黑人外教 | 日韩簧片在线观看 | 美女免费黄色 | 性感美女被爆操 | 亚洲国内自拍 | 中文字幕视频网 |