C/C++中的输入输出重定向
注:原创不易,转载请务必注明原作者和出处,感谢支持!
一 C/C++中的输入输出重定向
重定向在代码调试时使用有多频繁,相信经常刷算法题的同学一定深有体会。本文总结了在C和C++中进行输入输出重定向的简便方法。
1.1 C语言输入输出重定向
C语言标准库中提供了freopen()函数来进行输入输出的重定向。
函数原型:
#include <stdio.h>
FILE *freopen(const char *filename, const char *mode, FILE *stream);
功能:
- 如果filename被指定,则函数将关闭与stream关联的文件,然后以mode模式打开文件filename并将其与stream进行关联。
- 如果filename为空指针,则函数将stream以指定的mode更改stream的属性
- freopen()尤其适合用来重定向预定义的文件流(stdin、stdout、stderr)
参数:
- filename:包含文件名字符串的指针
- mode的可能取值
- r:读
- w:写
- a:追加(写)
- r+:读写(文件必须已存在)
- w+:读写(如果文件不存在则创建新空文件,如果已存在,则原文件内容将被丢弃!)
- a+:追加(读写)
- stream:文件流
返回值:如果重定向成功,则返回stream;否则,返回null
实例:
/* 将input.txt重定向到标准输入 */
freopen("input.txt", "r", stdin);
/* 将标准输出重定向到output.txt */
freopen("output.txt", "w", stdout);
1.2 C++语言输入输出重定向
C++提供了rdbuf()函数来进行重定向,与上述C语言片段功能一样的C++代码如下所示:
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char ** argv)
{
// 备份cin和cout的默认buf
streambuf *cin_backup, *cout_backup;
cin_backup = cin.rdbuf();
cout_backup = cout.rdbuf();
// 打开要参与重定向的文件
fstream in, out;
in.open("in.txt", ios::in);
out.open("out.txt", ios::out);
if (in.fail() || out.fail())
return -1;
// 将in.txt内容重定向到cin
// 将cout重定向到out.txt
cin.rdbuf(in.rdbuf());
cout.rdbuf(out.rdbuf());
int n;
cin >> n;
cout << n << endl;
cin.rdbuf(cin_backup);
cout.rdbuf(cout_backup);
return 0;
}
参考资料
C/C++中的输入输出重定向的更多相关文章
- Shell 环境中的输入输出重定向
Linux Shell 环境中的输入输出重定向,用符号<和>来表示.0.1和2分别表示标准输入.标准输出和标准错误. 1.重定向标准输出到文件: cat fo > foo.txt 2 ...
- 【转载】标准输入输出重定向(Visual C++)
原文:标准输入输出重定向(Visual C++) 引言 本人偶得在 Visual C++ 中进行输入输出重定向的办法,比通常的做法“freopen”更加的灵活和方便,特在此共享.目前,代码正在不断地摸 ...
- 全面理解Linux输入输出重定向
全面理解Linux输入输出重定向 本教程通过视频方式讲解shell操作,理解感念,教程通俗易懂,比起看一大堆文档要舒服的多.本次教程主要讲解 Linux Shell 中支持输入输出重定向,用符号&l ...
- C/C++ 标准输入输出重定向
转载自:http://www.cnblogs.com/hjslovewcl/archive/2011/01/10/2314356.html 这个对经常在OJ上做题的童鞋们很有用.OJ基本都是用标准输入 ...
- Linux Shell系列教程之(十六) Shell输入输出重定向
本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程 Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为 ...
- Linux学习笔记17——输入输出重定向
1 何谓输入输出重定向? 默认情况下输入是由键盘输入的.输出是默认的输出到屏幕上.而输入输出重定向就是改变默认的输入输出方向 2 freopen函数 freopen是被包含与stdio.h头文件中,是 ...
- linux 输入输出重定向
输入输出重定向 1,输入输出重定向,是针对过滤器的,不针对,编辑器和交互工具 2,>号只把正确的标准输出重定向,输出错误信息,可以用2> 3,新建或清空文件可以直接用>filenam ...
- shell之路【第四篇】输入输出重定向
输出重定向 命令输出重定向的语法为: command > file 或 command >> file 这样,输出到显示器的内容就可以被重定向到文件.果不希望文件内容被覆盖,可以使用 ...
- 历史命令~/.bash_history,查看所有别名alias,命令执行顺序,命令行常用快捷键,输入输出重定向,wc统计字节单词行数
历史命令大小:/etc/profile中字段HISTSIZE=1000 历史命令保存文件:~/.bash_history history -c 清空历史命令 history -w 把历史命令写入~/. ...
随机推荐
- HTML导出excel
在博客园找到的相关问题http://q.cnblogs.com/q/12952 还有相关的回答http://www.cnblogs.com/zhouxin/archive/2009/12/11/16 ...
- (五)图数据库数neo4j据备份与恢复
1.备份方式 neo4j目前有三种备份方式: (1)java在线备份,通过java程序可在neo4j启动状态下备份数据,也可远程备份(社区版本目前不支持) (2)neo4j-admin工具,可在neo ...
- winserver-记录共享文件夹操作日志
abstract 1.在共享文件夹上开启审计. 2.在日志中查看操作记录. 开启审计 共享文件夹属性 选择审计 添加审计用户 选择用户及审计事件 日志查看 运行eventvwr 在windowslog ...
- PostgreSQL For Windows 全功能精简版
预览 精简部分 保留全部 PostgreSQL 相关功能 删除自带的 pgadmin 4 删除文档 删除开发用头文件 删除开发用静态连接库 删除 Stack Build 工具 写了一个管理数据库用的批 ...
- java倒计时三种简单实现方式
写完js倒计时,突然想用java实现倒计时,写了三种实现方式 一:设置时长的倒计时: 二:设置时间戳的倒计时: 三:使用java.util.Timer类实现的时间戳倒计时 代码如下: package ...
- 简单shellcode编写
0x00 介绍 Shellcode 是指经过精心设计的一串指令,一旦注入正在运行的应用程序中即可运行,常用于栈和基于堆的溢出.术语Shellcode意思指的便是用于启动一个命令Shell的已编写好的可 ...
- A customized combobox with JQuery
要求实现一个轻量级的在客户端筛选的combobox,支持大数据量(超过1000个items),能快速检索内容,并支持数据的设置和活动等基本操作.在这之前尝试过使用Jquery UI的Autocompl ...
- extjs 中比较常见且好用的监听事件
ComboBox listeners:{ expand:function(){ //此函数是,点击下拉框展开的时候事件 }, select:function(com, record, index){ ...
- Vue笔记(props和 mounted)
1.mounted 1.1mounted中使用$nextTick会导致页面挂掉 mounted() { // 页面卡死 this.$nextTick(() => { this.setUrl() ...
- 《JAVA程序设计》_第九周学习总结
一.学习内容 1.数据库的建立.配置 在官网先下载好MySQL.navicat for MySQL.XAMPP.MySQL-connecter 在XAMPP中点击start开启MySQL 在navic ...