- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有以下代码,它工作得很好(除了它很慢,但我不太在意)。将 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/
#include #include #include using namespace std; int main() { ofstream fout("test.txt"); f
我想报告一个错误的解决方案在 Mac OS X El Capitan 版本 10.11.2 中安装 OpenFOAM 3.0.1 时得到错误是: "error: member reference ty
有没有人有一个例子来说明如何重新定义 C++ 内置的 clog,而不是有一个新的关联 rdbuf(),它被处理为原始 clog.rdbuf() 和 ofstream 对象的 rdbuf() 的三通到磁
使用这段代码,我从文件中读取了一个字符串。 pbuf = infile.rdbuf(); size = pbuf->pubseekoff(0, ios::end, ios::in); pbuf->pu
我试图通过简单地使用 rdbuf() 将两个文件合并为一个文件,但是在合并时,文件的第一行丢失了。代码如下: void mergeFiles(ifstream &file1, ifstream &fi
我有一个单元测试,它通过读取函数发送的缓冲区来验证函数: template void print_manifold(Manifold const& manifold) try { std::co
我正在尝试将文件内容复制到缓冲区。 std::ifstream fp(myFile, std::ios::binary) fp.seekg(0, fp.end); // set cursor at t
在下面的例子中, ifstream myFile; myFile.open("example.txt", ios::binary); cout << myFile.rdbuf() << endl; m
我正在尝试了解 IO 流的结构。 从 cppreference std::basic_stringstream::str 开始: Manages the contents of the underly
使用 rdbuf 将流复制到另一个流是一种众所周知的方法: #include #include int main() { std::ifstream in{"/tmp/foo.txt"};
这是我的简单代码: #include int main() { int foo; std::cin.rdbuf(std::cout.rdbuf()); std::cin>>f
提出以下问题的用户很快就接受了“读取缓冲区”: What does rd stand for in rdstate and rdbuf? 我仍然想知道“读取缓冲区”在“std::ostream”(co
我试试下面的代码: ostringstream oss; streambuf *psbuf, *backup; backup = oss.rdbuf(); psbuf = cout.rdbuf
比方说,我有几个数字的文件 input.txt 1 2 4 51 3 77 现在,我正在尝试执行这个命令: `string filename="input.txt"; ifstream ifs
有一个STL 库函数 streambuf* std::basic_ios::rdbuf (streambuf* sb); 此函数可用于更改与流关联的流缓冲区。如果您使用它,它会返回一个指向先前使用的
此代码的目的是支持通过 ./a.out 2) { in.open(argv[1]); } istream & input = (argc > 2 ? in : cin); string li
我有以下代码,它工作得很好(除了它很慢,但我不太在意)。将 infile 的全部内容写入 outfile 似乎并不直观。 // Returns 1 if failed and 0 if success
ofstream ofs1("file1.dat", ios::out | ios::binary); unsigned char data[64] = {0}; ofs1.write((char*)
是否可以在使用 .rdbuf() 函数将缓冲区推送到另一个流 stream 后重用字符串流 s? 我重建了环境: http://ideone.com/JoPJ1E #include using na
我正在尝试使用 pubsetbuf 方法修改 stringstream 对象的 stringbuffer 而不必复制字符串,但它不起作用。我正在关注 http://www.cplusplus.com/
我是一名优秀的程序员,十分优秀!