这是我的c ++代码
const int num_of_file = 1024;
std::ifstream data("data.txt");
std::vector<std::ofstream> files(num_of_file);
for (int i = 0; i < num_of_file; ++i)
{
files[i].open(std::to_string(i) + ".txt");
if (files[i].is_open() == false)
{
std::cerr << "open " << std::to_string(i) << ".txt fail" << std::endl;
exit(0);
}
}
但我收到&#34;打开509.txt失败&#34;当我每次都运行代码时。
答案 0 :(得分:1)
经过一些研究后,限制似乎源于流。 stream建立在C“streams”(fopen,fread等)之上,这些函数使用“文件句柄”共享表的集合,这些表的最大大小被“烧入”VC ++运行时库。我有点惊讶你在达到509个文件的极限 - 我可以说,这个极限应该接近2048个文件 - 但是我敢打赌这是你达到的极限。
您应该保留一个内部缓冲区,并在达到某个限制后打开,写入并关闭该文件。