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

C++如何将程序输出写入txt文件 void函数输出及空文件问题求解

问题解决方案

不需要修改permute函数的返回类型,void类型完全可以实现写文件需求,你当前输出为空是两个核心原因导致的:

  • permute函数的输出仅打印到控制台(cout),没有写入到你创建的output文件流
  • main函数中定义的str变量未从输入文件读取内容,是空字符串,permute函数执行时不会触发任何输出逻辑

具体修改步骤

  1. 给permute函数新增一个ofstream&类型的参数,用于接收输出文件流,将原有的cout输出逻辑改为输出到传入的文件流
  2. 在main函数中读取输入文件的内容到str变量
  3. 调用permute时传入已经打开的output文件流
  4. 操作结束后关闭输入输出文件流,确保缓存内容写入磁盘

修改后完整代码

#include <iostream>
#include <string>
#include <fstream>
#include "ArgumentManager.h"

using namespace std;

// 新增ofstream引用参数
void permute(string a, int l, int r, ofstream& out)
{
  if (l == r)
    // 输出到传入的文件流而非cout
    out << a << endl;
  else
  {
    for (int i = l; i <= r; i++)
    {
      swap(a[l], a[i]);
      permute(a, l+1, r, out);
      swap(a[l], a[i]);
    }
  }
}

int main(int argc, char* argv[])
{
  ArgumentManager am(argc, argv);
  ifstream input;
  ofstream output;

  string infileName = am.get("input");
  string outfileName = am.get("output");
  input.open(infileName);
  output.open(outfileName);

  string str;
  // 新增:从输入文件读取内容到str
  input >> str;

  int n = str.size();
  // 调用时传入output文件流
  permute(str, 0, n-1, output);

  // 新增:关闭文件流
  input.close();
  output.close();

  return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:39:00