【发布时间】:2020-09-11 18:06:54
【问题描述】:
我有一个充满数字的巨大文件(20 亿)。所以这是一个文件拆分器,可以将我的文件分成 100000 个数字组。但这是返回充满空格的空文件并进入。我什至尝试更改变量的数据类型。我很震惊。请提出建议。
#include <iostream>
#include <vector>
#include <string>
#include <iterator>
#include <fstream>
#include <algorithm>
using namespace std;
int main()
{
std::ifstream ifs("prime.txt");
unsigned long long int curr;
unsigned long long int x = 0;
string li;
int count;
while (getline(ifs, li))
{
count ++;
}
ifs.seekg(ios::beg);
string v;
while (curr < count)
{
x++;
std::string file = to_string(x) ;
std::string filename = "splitted\\"+file+ ".txt";
std::ofstream ofile (filename.c_str());
while (curr < 100000*x )
{
ifs >> v ;
ofile << v << "\n";
curr++;
}
ofile.close();
}
}
【问题讨论】:
-
curr未初始化。v应该是char吗?它不应该是一个足以容纳您的数字或至少是一个字符串的数字类型吗? -
不是问题的原因,而是在开始之前计算行数似乎不必要且效率低下,并且可能会导致问题,因为您不是逐行阅读而是使用行数作为终止条件跨度>
-
除了
ifs.seekg你可能还需要清除steam状态 -
也没有理由明确关闭 offile,因为它将在其解构中关闭
-
如何清除steam状态?
标签: c++ string file fstream getline