C/C++ 标准输入输出重定向
来源:互联网 发布:mac搜狗输入罗马数字 编辑:程序博客网 时间:2024/06/05 19:12
这个对经常在OJ上做题的童鞋们很有用。OJ基本都是用标准输入输出(USACO除外)。但如果你在调试的时候也都是从控制台输入,那就太浪费宝贵的时间了。我们可以重定向标准输入,调试的时候从文件读,提交时从标准输入读。
在C语言中,方法比较简单。使用函数freopen():
- freopen("data.in","r",stdin);
- freopen("data.out","w",stdout);
这样就把标准输入重定向到了data.in文件,标准输出重定向到了data.out文件。
这两句代码之后,scanf函数就会从data.in文件里读,而printf函数就会输出到data.out文件里了。
C++中,对流重定向有两个重载函数:
- streambuf* rdbuf () const;
- streambuf* rdbuf (streambuf *)
就相当于get/set方法。
- streambuf *backup;
- ifstream fin;
- fin.open("data.in");
- backup = cin.rdbuf(); // back up cin's streambuf
- cin.rdbuf(fin.rdbuf()); // assign file's streambuf to cin
- // ... cin will read from file
- cin.rdbuf(backup); // restore cin's original streambuf
注意最后我们使用了cin.rdbuf(backup)把cin又重定向回了控制台
然而,如果用C语言实现同样的功能就不那么优雅了。
因为标准控制台设备文件的名字是与操作系统相关的。
在Dos/Windows中,名字是con
freopen("con", "r", stdin);
在Linux中,控制台设备是/dev/console
freopen("/dev/console", "r", stdin);
另外,在类unix系统中,也可以使用dup系统调用来预先复制一份原始的stdin句柄。
1 0
- C/C++ 标准输入输出重定向
- C/C++ 标准输入输出重定向
- C/C++ 标准输入输出重定向
- Linux C中标准输入输出及重定向
- c语言标准输入输出重定向到不同文件
- C标准重定向
- 标准输入输出重定向
- 标准输入输出重定向
- C语言(Head First C)-4_1:创建小工具:标准输入输出和重定向
- C语言输入输出的重定向
- C语言输入输出的重定向问题
- C语言的输入输出重定向
- 关于C语言的输入输出重定向
- C语言重定向输入输出的方法
- 趣学 C 语言(十三)—— 标准输入输出重定向
- linux 标准输入输出重定向
- java标准输入输出重定向
- cgi标准输入输出重定向
- 加密解密工具类
- Swift 类型安全和类型推测
- iOS UI篇 - UIWebView缓存清除
- Thinkphp拖拽上传文件-使用webuploader插件(自己稍微改动了一些地方)——不切片上传
- Linux下的Memcache安装
- C/C++ 标准输入输出重定向
- 第三周项目4-顺序表应用
- centos 下安装Hadoop1.2.1
- php最新银联支付chinaPay,最新接口地址
- 网盘搜索,百度云盘搜索神器
- Python selenium —— 动态id、class怎么定位
- 设计模式之装饰者模式
- $(document).height()和$(window).height()区别
- 非IE冒泡与捕获