C++之重定向

#include "stdafx.h"
#include <iostream>
#include <fstream>
int main(int argc, char* argv[])
{
    using namespace std;
    cout << "Hello, Let‘s begin a test of cout to file." << endl;
    // 保存cout流缓冲区指针
     streambuf* coutBuf = cout.rdbuf();
    ofstream of("out.txt");
    // 获取文件out.txt流缓冲区指针
     streambuf* fileBuf = of.rdbuf();

    // 设置cout流缓冲区指针为out.txt的流缓冲区指针
     cout.rdbuf(fileBuf);
    cout << "Name " << "Chen"        << endl;
    cout << "Sex  " << "Female"      << endl;
    cout << "E-mail"<< "[email protected]" << endl;
    of.flush();
    of.close();
    // 恢复cout原来的流缓冲区指针
     cout.rdbuf(coutBuf);
    cout << "Write Personal Information over..." << endl;
    system("PAUSE");
    return 0;
}

  

C++是通过rdbuf函数来进行流重定向的,例如:

#include <iostream>
#include <fstream>

using std::cout;
using std::streambuf;
using std::rdbuf;
using std::ofstream;

int main( void )
{
    ofstream fout( "out.txt" );
    streambuf * OldBuf = cout.rdbuf( fout.rdbuf( ) ); //保存cout的流缓冲类指针并用fout的流缓冲类指针代替
     cout << "example";  //cout的内容被写入文件out.txt中
     cout.rdbuf( OldBuf );  //恢复cout的流缓冲类指针
     cout << "reload";  //恢复输出到终端
     return 0;
}

  

C++之重定向

时间: 2024-11-17 21:49:31

C++之重定向的相关文章

数据重定向的简单使用

数据重定向 作用: 1)保存重要的屏幕输出信息: 2)后台执行中程序,不希望它干扰到屏幕正常的数据结果: 3)不显示错误的输出信息: 4)错误信息和正确信息需要分别记录. 分类: 1,标准输入:代码为0 ,使用<或者<< 2,标准输出:代码为1,使用>或者>> 3,标准错误输出:代码为2,使用2>或者2>> 例如:ll  /home > ~/homefile 如果homefile不存在,那么系统会自动创建,如果homefile已经存在,使用>

Nginx学习笔记15rewrite之(二)redirect临时重定向

redirect标志跟permanent标志的区别是:redirect使用HTTP 302临时重定向,permanent使用HTTP 301永久重定向.本文介绍redirect标志的临时重定向动作. Nginx配置: location ~ ^/app2/ { rewrite ^/app2/(.*)$  /app/$1  redirect; } 运行结果: curl -v   http://ng.coe2coe.me:8000/app2/ * Hostname was NOT found in D

Linux基础入门--IO重定向及管道

IO重定向及管道 一直都提到,程序:指令+数据 其实程序也有IO,数据的来源有多个地方:文件.外部 可用于输入的设备:文件(linux一切皆文件) 键盘设备.文件系统上的常规文件加载内容.网卡等: 可用于输出的设备:文件(linux一切皆文件) 显示器.文件系统上的常规文件输出保存.网卡等: 程序的数据流有三种: 输入的数据流:<-- 标准输入(stdin),是键盘: 输出的数据流:--> 标准输出(stdout),显示器: 错误输出流:  --> 错误输出(stderr),显示器: f

重定向和转发

转发:request.getRequestDispatcher("success.jsp").forward(request,response); 在服务器组件收到用户请求后.经过它的处理后有传递给了另一个组件.不修改用户的请求码.各组件处理完之后在返回给用户,例如主页面的框架. 用户请求----->服务器------->组件1------->组件2------->服务器------->用户 (请求不变) <a">重定向:respon

004-用户、组、权限管理命令及bash配置文件、管道、重定向、grep

l  1.用户管理命令 1.)创建用户命令 useradd  [OPTIONS] USERNAME -u(UID):指定用户UID -g(GID):指定基本组 -G( group,...):指定附加组 -c"COMMENT":指定注释信息 -d(home_dir):指定家目录/path/to/directory -s:指定SHELL路径(/etc/shells指定了当前系统可用的安全shell) -m –k:强行为用户创建家目录 -M:不创建用户家目录 /etc/login.defs

shell中的重定向(输入输出)

注意:不同版本的Linux会有所区别,不过大同小异 Linux 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示.一般情况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器. 输出重定向 命令的输出不仅可以是显示器,还可以很容易的转移向到文件,这被称为输出重定向. 命令输出重定向的语法为: $ command > file 这样,输出到显示器的内容就可以被重定向到文件. 例如,下面的命令在显示器上不会看到任何输出: $ who > users 打

(17)Powershell中的重定向运算符

默认情况下,Powershell 把输出发送到屏幕显示.但是,Powershell也可以将输出重定向至一个文本文件,或将错误输出重定向至常规输出流. 重定向运算符有什么用 ? 重定向运算符意味着我们可以将命令的输出信息输出到指定的文件,完全满足脚本中的log的要求,即可以利用重定向打印脚本或命令执行的详细信息. Powershell 中有以下重定向运算符. 运算符 说明 示例 > 将输出发送到指定文件. PS D:\> Get-Process > process.txt >>

探秘linux-文件管理(inode理解)及管道和IO重定向

一.文件管理 1.Linux系统上各主要目录的简介 / 根,所有文件的起点 bin 存放操作系统启动时的引导程序,以及操作系统内核文件 boot 存放操作系统启动时的引导程序,以及操作系统内核文件 dev 存放设备文件和特殊文件(如字符设备) etc 存放配置文件的目录 home 普通用户的家目录默认都在此目录下 lib 存放系统库和内核模块文件 (/lib/modules) lib64 存放x86_64位系统上共享库文件 media 系统上提供的设备挂载点 misc 系统上提供的设备挂载点 m

Web---HTTP请求、重定向、转发和数据压缩

HTTP常用的请求方式包括: GET-最为常见,但发送的数据量很小,发送的数据直接包含到url的后面. POST-可以包含大量数据,数据在请求正文中通过表单进行提交. HEAD,PUT,DELETE. 后面三种Tomcat服务器默认都不支持.常用的只有前两种. GET: 发送到服务器的数据出现在URL的后面.最多不能超过1K.如: http://localhost:8080/index.jsp?name=itcast&sex=man&.. POST: 发送到服务器的数据会出现有请求的正文部

linux输入输出重定向

http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html 在Linux下,当一个用户进程被创建的时候,系统会自动为该进程创建三个数据流,也就是题目中所提到的这三个.那么什么是数据流呢(stream)?我们知道,一个程序要运行,需要有输入.输出,如果出错,还要能表现出自身的错误.这是就要从某个地方读入数据.将数据输出到某个地方,这就够成了数据流. 因此,一个进程初期所拥有的这么三个数据流,就分别是标准输出.标准输入和标准错误,分别