为什么"打开文件失败"当我打开许多文件?

时间:2017-03-24 11:00:56

标签: c++

这是我的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;当我每次都运行代码时。

1 个答案:

答案 0 :(得分:1)

经过一些研究后,限制似乎源于流。 stream建立在C“streams”(fopen,fread等)之上,这些函数使用“文件句柄”共享表的集合,这些表的最大大小被“烧入”VC ++运行时库。我有点惊讶你在达到509个文件的极限 - 我可以说,这个极限应该接近2048个文件 - 但是我敢打赌这是你达到的极限。

您应该保留一个内部缓冲区,并在达到某个限制后打开,写入并关闭该文件。

相关问题