zoukankan      html  css  js  c++  java
  • C/C++ 标准输入输出重定向

    这个对经常在OJ上做题的童鞋们很有用。OJ基本都是用标准输入输出(USACO除外)。但如果你在调试的时候也都是从控制台输入,那就太浪费宝贵的时间了。我们可以重定向标准输入,调试的时候从文件读,提交时从标准输入读。

    在C语言中,方法比较简单。使用函数freopen():

    这样就把标准输入重定向到了data.in文件,标准输出重定向到了data.out文件。

    这两句代码之后,scanf函数就会从data.in文件里读,而printf函数就会输出到data.out文件里了。

    C++中,对流重定向有两个重载函数:

    就相当于get/set方法。

    注意最后我们使用了cin.rdbuf(backup)把cin又重定向回了控制台

    然而,如果用C语言实现同样的功能就不那么优雅了。

    因为标准控制台设备文件的名字是与操作系统相关的。

    在Dos/Windows中,名字是con

    freopen("con", "r", stdin);

    在Linux中,控制台设备是/dev/console

    freopen("/dev/console", "r", stdin);

    另外,在类unix系统中,也可以使用dup系统调用来预先复制一份原始的stdin句柄。

  • 相关阅读:
    Linux 工具箱—17款文件管理器
    RMAN 初学者指南
    Oracle监听器Server端与Client端配置实例
    mysqlproxy完成mysql读写分离
    linux端口映射
    MYSQL分布式集群使用主从复制
    SQL高级运用
    Redis安装与使用
    mysql cpu 负载率超过理想值,解决方案总结
    揭秘:HR是如何做背景调查的?你真的就可以隐瞒事实了吗?
  • 原文地址:https://www.cnblogs.com/hjslovewcl/p/2314356.html
Copyright © 2011-2022 走看看