我有以下代码,它工作得很好(除了它很慢的事实,但我并不在乎).将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;
}
Run Code Online (Sandbox Code Playgroud)
任何见解?
Pot*_*ter 20
iostream类只是I/O缓冲区的包装器.它iostream本身并没有做很多...主要是它提供operator>>格式化操作符.缓冲区由派生自的对象提供basic_streambuf,您可以使用它来获取和设置rdbuf().
basic_streambuf是一个抽象的基础,具有许多虚函数,这些函数被重写以提供读/写文件,字符串等的统一接口.该函数basic_ostream<…>::operator<<( basic_streambuf<…> )被定义为继续读取缓冲区直到底层数据源耗尽.
iostream 但是,这是一个可怕的混乱.
CB *_*ley 17
是的,它在标准中指定,实际上非常简单.rdbuf()只返回指向给basic_streambuf定[io]stream对象的底层对象的指针.
basic_ostream<...>有一个operator<<指针的重载basic_streambuf<...>,写出的内容basic_streambuf<...>.
| 归档时间: |
|
| 查看次数: |
18279 次 |
| 最近记录: |