首页 > 后端开发 > C++ > 如何将 C 标准输入和输出流重定向到文件?

如何将 C 标准输入和输出流重定向到文件?

Patricia Arquette
发布: 2024-12-23 00:08:09
原创
367 人浏览过

How Can I Redirect C   Standard Input and Output Streams to Files?

将输入和输出流重定向到文件

将标准输入(cin)和标准输出(cout)重定向到文件进行输入和输出操作分别遵循这些步骤:

实现:

#include <iostream>
#include <fstream>
#include <string>

int main() {
    // Open the input and output files
    std::ifstream in("in.txt");
    std::ofstream out("out.txt");

    // Redirect cin and cout to the files
    std::streambuf* cinbuf = std::cin.rdbuf();
    std::cin.rdbuf(in.rdbuf());
    std::streambuf* coutbuf = std::cout.rdbuf();
    std::cout.rdbuf(out.rdbuf());

    // Perform input and output operations
    std::string line;
    while (std::getline(std::cin, line)) {
        std::cout << line << "\n";
    }

    // Reset cin and cout to standard streams
    std::cin.rdbuf(cinbuf);
    std::cout.rdbuf(coutbuf);

    return 0;
}
登录后复制

说明:

  • 使用std打开输入和输出文件分别是 ::ifstream 和 std::ofstream。
  • 保存使用 std::cin.rdbuf() 和 std::cout.rdbuf() 获取 cin 和 cout 的当前缓冲区。
  • 使用 std::cin 将 cin 重定向到输入文件的缓冲区,将 cout 重定向到输出文件的缓冲区.rdbuf(in.rdbuf()) 和 std::cout.rdbuf(out.rdbuf()).
  • 执行输入和输出操作照常进行。
  • 使用 std::cin.rdbuf(cinbuf) 和 std::cout.rdbuf(coutbuf) 将 cin 和 cout 恢复到原始缓冲区。

简化重定向:

您还可以保存并重定向一行使用:

auto cinbuf = std::cin.rdbuf(in.rdbuf());
登录后复制

这将 cin 的缓冲区设置为 in.rdbuf() 并返回与 cin 关联的旧缓冲区。相同的技术可以用于 std::cout。

以上是如何将 C 标准输入和输出流重定向到文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板