C++流重定向
来源:互联网 发布:宁夏中卫云计算基地 编辑:程序博客网 时间:2024/05/16 02:17
我们使用STL编程的时候有时候会想到把一个流对象指向的内容用另一个对象来输出,比如想把一个文件的内容输出到显示器上,
我们可以用简单的两行代码就可以完成:
ifstream fileRead("test.txt",ios::in);
cout<<fileRead.rdbuf();
上面的代码就把fileRead流对象中的流重定向到标准输出cout上,你可以在屏幕上看到test.txt的内容
C++ 中rdbuf重定向的经典例子:
1.
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream fin("1.txt,ios::in|ios::binary);
if(!fin) //if(!fin .is_open())
{
cout<<"源文件打开失败"<<endl;
return 0;
}
cout<<fin.rdbuf();
cout<<endl;
fin.close();
return 0;
}
2.
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream fin("1.txt",ios::in|ios::binary);
if(!fin)
{
cout<<"源文件打开失败"<<endl;
return 0;
}
ofstream fout("2.txt",ios::out|ios::binary);
if(!fout)
{
fin.close();
cout<<"目标文件打开失败"<<endl;
return 0;
}
fout<<fin.rdbuf();
fin.close();
fout.close();
return 0;
}
3.
#include <iostream>
#include <fstream>
using namespace std;
int main( )
{
ofstream log("out.log");
streambuf* pstream= cout.rdbuf(log.rdbuf()); // 返回cout的流对象指针,使cout重定向到log文件中
cout << "Testn"; // 写入到文件中
cout.rdbuf(pstream); // 恢复cout的流对象指针
cout << "Test2n"; // 写入cout
return 0;
}
很经典的东西了。
rdbuf函数有两种调用方法
basic_streambuf<Elem, Traits> *rdbuf( ) const;
basic_streambuf<Elem, Traits> *rdbuf( basic_streambuf<E, T> *_Sb);
1)无参数。返回调用者的流缓冲指针。
2)参数为流缓冲指针。它使调用者与参数(流缓冲指针)关联,返回自己当前关联的流缓冲区指针。
我们可以用简单的两行代码就可以完成:
ifstream fileRead("test.txt",ios::in);
cout<<fileRead.rdbuf();
上面的代码就把fileRead流对象中的流重定向到标准输出cout上,你可以在屏幕上看到test.txt的内容
C++ 中rdbuf重定向的经典例子:
1.
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream fin("1.txt,ios::in|ios::binary);
if(!fin) //if(!fin .is_open())
{
cout<<"源文件打开失败"<<endl;
return 0;
}
cout<<fin.rdbuf();
cout<<endl;
fin.close();
return 0;
}
2.
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream fin("1.txt",ios::in|ios::binary);
if(!fin)
{
cout<<"源文件打开失败"<<endl;
return 0;
}
ofstream fout("2.txt",ios::out|ios::binary);
if(!fout)
{
fin.close();
cout<<"目标文件打开失败"<<endl;
return 0;
}
fout<<fin.rdbuf();
fin.close();
fout.close();
return 0;
}
3.
#include <iostream>
#include <fstream>
using namespace std;
int main( )
{
ofstream log("out.log");
streambuf* pstream= cout.rdbuf(log.rdbuf()); // 返回cout的流对象指针,使cout重定向到log文件中
cout << "Testn"; // 写入到文件中
cout.rdbuf(pstream); // 恢复cout的流对象指针
cout << "Test2n"; // 写入cout
return 0;
}
很经典的东西了。
rdbuf函数有两种调用方法
basic_streambuf<Elem, Traits> *rdbuf( ) const;
basic_streambuf<Elem, Traits> *rdbuf( basic_streambuf<E, T> *_Sb);
1)无参数。返回调用者的流缓冲指针。
2)参数为流缓冲指针。它使调用者与参数(流缓冲指针)关联,返回自己当前关联的流缓冲区指针。
- c/c++重定向
- c/c++重定向
- C标准重定向
- C++:文件重定向
- c语言重定向
- c 输出重定向
- C库函数重定向
- C重定向
- C语言重定向
- C/C++,Java 重定向输入输出流至文件
- 代码中的输入输出(重定向、文件流C/C++)
- C/C++,Java 重定向输入输出流至文件
- 代码中的输入输出(重定向、文件流C/C++)
- c的一种重定向
- linux C 实现重定向
- 简述C语言重定向
- 流的重定向
- C++流重定向
- Nova snapshot 流程分析
- 亮瞎你的眼shell
- c++ sizeof
- Hibernate懒加载解析
- C#集合
- C++流重定向
- HDU1012
- 使用window.showDialog打开新页面后滚动条设置
- 使用ListView应该注意的地方
- zoj2770 Burn the Linked Camp 差分约束和最短路bellman
- QTreeWidget的使用
- SQLite3常用语句
- GUI排版
- POJ 1273 Drainage Ditches