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 把历史命令写入~/. ...
随机推荐
- linux安装windows启动盘
安装gparted
- docker部署postgresql时,data目录不生效的问题探究
今天用docker部署postgresql,用的是官方的镜像.结果挂载完 /var/lib/postgresql/data目录后,和容器里的目录其实并没有挂载成功. 母机上的目录并没有成功挂载到容器里 ...
- liteos简介(一)
LiteOS是在2015华为网络大会上华为发布的敏捷网络3.0中的一个轻量级的物联网操作系统,LiteOS体积只有10KB级. 在Hi3559A中,liteos是用于Cortex-A53,用于处理MP ...
- PowerDesigner 提示 Existence of index、key、reference错误
一.建立一个表后,为何检测出现Existence of index的警告 A table should contain at least one column, one index, one key, ...
- 【Shell基础】循环:for、while、until
1.for循环 ..};do echo "for loop" done 2.while循环 be_s= en_s= while [ "$be_s" -le &q ...
- vps install ss
1.install ss yum install python-setuptools easy_install pip pip install shadowsocks 2.config ss (sin ...
- ubuntu下安装mongodb
https://www.cnblogs.com/shileima/p/7823434.html
- JS实现 阿拉伯数字金额转换为中文大写金额 可以处理负值
JS实现 阿拉伯数字金额转换为中文大写金额 可以处理负值 //************************* 把数字金额转换成中文大写数字的函数(可处理负值) ****************** ...
- 【zabbix教程系列】七、自动注册(Windows)
零.页面操作,设置自动注册Windows 配置--->动作--->事件源选为自动注册---->创建动作 填写名称,配置触发条件 主机元数据 值为 Windows 操作 一.Win ...
- tensorflow-RNN和LSTM
本章主要介绍循环神经网络(recurrent neuralnetwork,RNN)和长短时记忆网络(long short-term memory,LSTM) 一. RNN简介 1.背景 循环神经网络挖 ...