白痴的分割文件^V^
#include<iostream>
#include<fstream>
#include<string>
#include<cstdlib>
using namespace std;
int main()
{
ifstream infile;
ofstream outfile;
string s,fileName;
int num, i,m,n,xh;;
int getLineNumber(string fb="");
string fn = "name.csv";
m = getLineNumber(fn);
string getFileName(int i, string fn = "");
infile.open("name.csv");
cout << "请输入要分割文件的序号:" << endl;
cin >> xh;
for (i = 1; i <= m; i++)
{
getline(infile, fileName);
if (i==xh)
break;
}
infile.close();
n = getLineNumber(fileName);
cout << "文件总行数:" << n << endl;
//根据总行数决定分割为几个文件
cout << "输入分割行数:";
cin >> num;
int list = n / num;
if (n % num != 0)
list = list + 1;
cout << "分割为" << list << "个文件" << endl;
cout << "输入储存小文件名称的文件名:";
cin >> fileName;
switch (list)
{
case 1:outfile.open(getFileName(1, fileName));
outfile.close(); break;
case 2:outfile.open(getFileName(1, fileName)); outfile.close();
outfile.open(getFileName(2, fileName)); outfile.close(); break;
case 3:outfile.open(getFileName(1, fileName)); outfile.close();
outfile.open(getFileName(2, fileName)); outfile.close();
outfile.open(getFileName(3, fileName)); outfile.close(); break;
case 4:outfile.open(getFileName(1, fileName)); outfile.close();
outfile.open(getFileName(2, fileName)); outfile.close();
outfile.open(getFileName(3, fileName)); outfile.close();
outfile.open(getFileName(4, fileName)); outfile.close(); break;
/*case 5:outfile.open(getFileName(1, "fileName")); outfile.close();
outfile.open(getFileName(2, "fileName")); outfile.close();
outfile.open(getFileName(3, "fileName")); outfile.close();
outfile.open(getFileName(4, "fileName")); outfile.close();
outfile.open(getFileName(5, "fileName")); outfile.close(); break;*/
default:cout << "超出设定分割文件数,分割错误,请修改代码" << endl;
}
//分割
string fileName_s = getFileName(xh, "name.csv");//要分割的文件名
infile.open(fileName_s);
for (i = 1; i <= n; i++)
{
getline(infile, s);
if (i <= num)
{
int j = 1;
string fileName_s = getFileName(j,fileName);
outfile.open(fileName_s,ios::app);
outfile << s << endl;
outfile.close();
}
else if (i > num&&i <= 2 * num)
{
int j = 2;
string fileName_s = getFileName(j, fileName);
outfile.open(fileName_s,ios::app);
outfile << s << endl;
outfile.close();
}
else if (i > 2 * num&&i <= 3 * num)
{
int j = 3;
string fileName_s = getFileName(j, fileName);
outfile.open(fileName_s,ios::app);
outfile << s << endl;
outfile.close();
}
else if(i>3*num&&i<=4*num)
{
int j = 4;
string fileName_s = getFileName(j, fileName);
outfile.open(fileName_s,ios::app);
outfile << s << endl;
outfile.close();
}
/*else if (i > 4 * num&&i <= 5 * num)
{
int j = 5;
string fileName_s = getFileName(j, "name_s.csv");
outfile.open(fileName_s, ios::app);
outfile << s << endl;
outfile.close();
}*/
}
infile.close();
system("pause");
return 0;
}
//计算文件总行数
int getLineNumber(string fn="")
{
int m=0;
string fileName;
ifstream infile;
infile.open(fn);
if (infile.fail())//判断文件是否存在
{
cout << "读取文件失败";
}
else
{
while (getline(infile, fileName))
{
m++;//m为要分割文件数量
}
}
infile.close();
return m;
}
//获取文件名
string getFileName(int i, string fn = "")
{
ifstream infile;
string fileName;
infile.open(fn);
int getLineNumber(string fn = "");
int m = getLineNumber(fn);
for (int j = 1; j <= m; j++)
{
getline(infile, fileName);
if (j==i)
break;
}
infile.close();
return fileName;
}
白痴的合并文件
include<iostream>
#include<fstream>
#include<string>
#include<cstdlib>
using namespace std;
int main()
{
ifstream infile;
ofstream outfile;
string s, fileName;
int num, i, m, n, xh;;
int getLineNumber(string fb = "");
string fn = "name.csv";
m = getLineNumber(fn);
string getFileName(int i, string fn = "");
infile.open("name.csv");
cout << "请输入要合并为哪个文件的序号:" << endl;
cin >> xh;
for (i = 1; i <= m; i++)
{
getline(infile, fileName);
if (i == xh)
break;
}
infile.close();
outfile.open(fileName);
outfile.close();
cout << "要合并的文件个数为:";
cin >> num;
for(i=1;i<=num;i++)
{
string fileName_s = getFileName(i, "name_s.csv");//要合并的文件
infile.open(fileName_s);
n = getLineNumber(fileName_s);
cout << "yes";
for (int j = 1; j <= n; j++)
{
getline(infile, s);
outfile.open(fileName,ios::app);
outfile << s << endl;
outfile.close();
}
infile.close();
}
system("pause");
return 0;
}
//计算文件总行数
int getLineNumber(string fn = "")
{
int m = 0;
string fileName;
ifstream infile;
infile.open(fn);
if (infile.fail())//判断文件是否存在
{
cout << "读取文件失败";
}
else
{
while (getline(infile, fileName))
{
m++;//m为要分割文件数量
}
}
infile.close();
return m;
}
//获取文件名
string getFileName(int i, string fn = "")
{
ifstream infile;
string fileName;
infile.open(fn);
int getLineNumber(string fn = "");
int m = getLineNumber(fn);
for (int j = 1; j <= m; j++)
{
getline(infile, fileName);
if (j == i)
break;
}
infile.close();
return fileName;
}