gpt4 book ai didi

c++ - ifstream::rdbuf() 实际上做了什么?

转载 作者:IT老高 更新时间:2023-10-28 22:17:13 40 4
gpt4 key购买 nike

我有以下代码,它工作得很好(除了它很慢,但我不太在意)。将 infile 的全部内容写入 outfile 似乎并不直观。

// Returns 1 if failed and 0 if successful
int WriteFileContentsToNewFile(string inFilename, string outFilename)
{
ifstream infile(inFilename.c_str(), ios::binary);
ofstream outfile(outFilename.c_str(), ios::binary);

if( infile.is_open() && outfile.is_open() && infile.good() && outfile.good() )
{
outfile << infile.rdbuf();

outfile.close();
infile.close();
}
else
return 1;

return 0;
}

有什么见解吗?

最佳答案

iostream类只是 I/O 缓冲区的包装器。 iostream它本身并没有做很多事情……主要是它提供了operator>>格式化运算符。缓冲区由派生自 basic_streambuf 的对象提供,您可以使用 rdbuf() 获取和设置.

basic_streambuf是一个抽象基础,包含许多虚拟函数,这些虚拟函数被重写以提供一个用于读取/写入文件、字符串等的统一接口(interface)。函数 basic_ostream<…>::operator<<( basic_streambuf<…> )定义为一直读取缓冲区,直到底层数据源耗尽。

iostream不过,这真是一团糟。

关于c++ - ifstream::rdbuf() 实际上做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2141749/

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