こんてんつ
.txtファイルを読み込んで、規則に従って分割して出力する。今回は下記の様な野球選手の名簿を、チーム毎に分割して新たなテキストファイルを複数作成する。
読み込むテキストファイル
# inputTxtFile.txt Team1 : 巨人 菅野智之(31、投手) 坂本勇人(31、内野) Team2 : 広島 鈴木誠也(26、外野) 菊池涼介(30、内野) Team3 : ヤクルト 山田哲人(28、内野) 青木宣親(38、外野) 村上宗隆(21、内野) Team4 : ソフトバンク 柳田悠岐(32、外野) 森 唯斗(28、投手) 松田宣浩(37、内野) 千賀滉大(27、投手) Team5 : 楽天 田中将大(32、投手)
コード
Teamという文字列を見つけたら分割するという作戦にした。
#include <iostream> #include<fstream> #include<string> using namespace std; int main(){ fstream inputFile; string inputLine; fstream outputFile; string outputFileName; int teamCount = 1; inputFile.open("inputTxtFile.txt", ios::in); //read if (inputFile.is_open()) { while (getline(inputFile, inputLine)) { // Teamの文字列が見つかったら.txtを作成する部分 if (inputLine.find("Team") != string::npos) { outputFileName = "Team" + to_string(teamCount) + ".txt"; outputFile.open(outputFileName, ios::out); //create outputFile.close(); cout << "I'll create Team" << teamCount << ".txt" << endl; getline(inputFile, inputLine); //わざとlineを1行進める teamCount++; } else {} // 上で作成された.txtに対して、inputLineをどんどんappendしていく outputFile.open(outputFileName, ios::app); //append if (outputFile.is_open()) { outputFile << inputLine << endl; outputFile.close(); } } // ココマデ while (getline(inputFile, inputLine)) inputFile.close(); } cout << "finished" << endl; system("pause>0"); remove("0"); }
出力
ファイルが複数できて、それぞれに分割された結果が入っている。