gpt4 book ai didi

c++ - 写入文件功能和性能

转载 作者:行者123 更新时间:2023-11-30 02:54:56 29 4
gpt4 key购买 nike

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

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 文件 将在其析构函数中关闭,在write 结束时(如果它通过异常退出则更早)。因此文件将在循环的每次迭代中打开和关闭。 http://en.cppreference.com/w/cpp/io/basic_ofstream

也许您可以创建一个包含该文件的小包装类,并具有一个write 成员函数,或者更改write 以获取一个std::ofstream&,您在循环之上创建。

关于c++ - 写入文件功能和性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16757300/

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