写入文件的功能和性能

Writing to file function and performances

本文关键字:性能 功能 文件      更新时间:2023-10-16

当调用我的write函数时,编译器会看到文件需要保持打开状态,对吗?还是每次调用函数都会打开和关闭文件?此外,我的文件是否在结束时关闭,即使没有明确关闭它?这是处理写入同一文件的最佳方式吗?

void write(const std::string &filename, const std::string &text)
{
    std::ofstream file(filename, std::ios_base::out | std::ios_base::app );
    file << text << std::endl;
}
void write2(std::ofstream &file, const std::string &text)
{
    file << text << std::endl;
}
int main(int argc, char** argv)
{
    int count(0);
    for (int i=0; i<10; ++i)
    {
        // Do heavy computing ...
        ++count;
        std::ostringstream out; out << count;
        write("test", out.str());
    }
    // Alternative
    std::ofstream file("test", std::ios_base::out | std::ios_base::app );
    count = 0;
    for (int i=0; i<10; ++i)
    {
        // Do heavy computing ...
        ++count;
        std::ostringstream out; out << count;
        write2(file, out.str());
    }
    return 0;
}

std::ofstream file将在其析构函数中关闭,在write的末尾(如果通过异常退出,则更早)。因此,文件将在每次循环迭代时打开和关闭。http://en.cppreference.com/w/cpp/io/basic_ofstream

也许您可以创建一个包含文件的小包装器类,并具有write成员函数,或者将write更改为std::ofstream&,这是您在循环上方创建的。