You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++ I/O流重定向问题求助:如何实现CMD下文件读写重定向?

问题解决思路

你的核心误解是shell重定向的工作方式:program < file1 > file2里的<和>是操作系统负责的,不需要程序自己处理。< file1会把file1的内容定向到程序的标准输入(std::cin),> file2会把程序的标准输出(std::cout)直接写入file2。你代码里手动打开file2.txt的操作完全多余,反而破坏了重定向的逻辑。

具体修改点
  • 删除所有和std::ofstream相关的代码,包括头文件<fstream>(不再需要)。
  • 把原本写入output_file的内容直接输出到std::cout。
  • 移除循环内重复打开/关闭文件的低效逻辑。
修改后的完整代码
#include <iostream>
#include <string>

int main() {
    std::string input_line;
    while (std::getline(std::cin, input_line)) {
        std::cout << input_line << std::endl;
    }
    return 0;
}
额外说明
  1. 工作原理:
    操作系统会接管所有重定向操作:执行program < file1 > file2时,std::cin的数据源自动变成file1,std::cout的输出目标自动变成file2,程序无需关心具体文件名,通用性更强。
  2. 原代码的其他问题:
    • 硬编码文件名file2.txt,无法满足用户自定义文件名的需求。
    • 每次循环都打开/关闭文件,频繁IO操作会大幅降低运行效率。
    • 使用std::ios::app追加模式,和> file2的覆盖语义冲突。

内容的提问来源于stack exchange,提问作者emdez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 13:34:58