C++中rdbuf()简介及文件流的概念
C++中rdbuf()简介及文件流的概念
Name:qianghaohao
#include <cstring> #include <iostream> #include <fstream> #include <sstream> using namespace std; //****************个人对流操作中<<和>>符号的理解******************** ////////////////////////////////////////////////////////////////////////// /// 可以这么认为:可以根据<< 或 >>箭头的方向来理解流的过程. /// 比如:cout<<n; 由于<<箭头方向向左,所以意思就是将n的值流入cout /// cout是标准输出流,所以cout<<n;就把n显示到了屏幕上. /// 对于cin>>n;来说由于>>箭头方向向右,所以意思就是将cin中的数据 /// 流入n变量,cin是标准输入流,所以cin>>n;就把屏幕上的数据写入n /// 变量.也就是说箭头的方向相当于流的方向,也就是数据的流向.对于其他 /// 流对象(xxxstream)也是一样的道理. ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// /// C++流对象函数rdbuf()简介: /// rdbuf()可以实现一个流对象指向的内容用另一个流对象来输出,比如想把 /// 一个文件的内容输出到显示器上,我们可以两行代码完成: /// ifstream infile("test.txt"); /// cout << infile.rdbuf(); ////////////////////////////////////////////////////////////////////////// #if 0 int main() { ifstream infile("test.txt"); cout << infile.rdbuf(); //把infile流对象中的流重定向到标准输出cout上 return 0; } #endif ////////////////////////////////////////////////////////////////////////// /// 一个简单的文件复制示例,简化了C语言繁琐的操作(循环读取) ////////////////////////////////////////////////////////////////////////// #if 1 int main() { fstream infile("test.txt", ios::in); if (!infile.is_open()) { cout << "源文件打开失败..." << endl; return -1; } fstream outfile("test.bak.txt", ios::out); if (!outfile.is_open()) { cout << "目标文件打开失败..." << endl; return -1; } outfile<<infile.rdbuf(); //将infile流中的数据传入outfile流中 infile.close(); outfile.close(); return 0; } #endif
posted on 2016-02-24 03:32 CodeNutter 阅读(717) 评论(0) 编辑 收藏 举报