gpt4 book ai didi

c++ - 将一个大数据文件拆分成几个小文件(文本格式)

转载 作者:行者123 更新时间:2023-11-28 08:02:25 25 4
gpt4 key购买 nike

我正在尝试将一个大数据文件拆分成几个小文本文件。以下代码每次打开和关闭一个新文件,这是不可行的。有没有其他方法可以做到这一点?

ifstream infile(file_name);

if(infile)
{
char val;
while(!infile.eof())
{
ofstream ofile (ofile_name);
infile >> val;
ofile << val;
if( infile.peek() == '\n' )// last entry on the line has been read
{
row_counter++;
if (row_counter == win_size)
// generate new ofile_name
}
ofile.close();
}
infile.close();
}

最佳答案

如果不打开和关闭输出文件,您将无法创建多个输出文件。

原因是,每个输出文件都应该有一个唯一的名称。您将必须为输出文件生成有用的名称。文件(内容)和文件名之间的连接将在 open 调用(或 ofstream 构造函数)中完成。

编辑

为了避免为每个角色打开和关闭,您需要状态变量。在您的示例中 row_counter 可用于它。您需要执行以下步骤:

  • 在 while(!infile.eof()) 循环之前打开初始文件
  • 关闭你的ofile,生成下一个名字并打开你写的新的地方//生成新的ofile_name
  • 最后在循环后关闭您的文件。

这可以通过以下方式完成:

if(infile)
{
char val;

row_counter = 0;
ofstream ofile (ofile_name);

while(!infile.eof())
{
infile >> val;
ofile << val;

if( infile.peek() == '\n' )// last entry on the line has been read
{
row_counter++;

if (row_counter == win_size)
{
row_counter = 0;
ofile.close();
// generate new ofile_name
ofile.open(ofile_name); // you might change the nMode parameter if necessary
}
}
}

ofile.close();
infile.close();
}

关于c++ - 将一个大数据文件拆分成几个小文件(文本格式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11081065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com