C++如何将程序输出写入txt文件 void函数输出及空文件问题求解
问题解决方案
不需要修改permute函数的返回类型,void类型完全可以实现写文件需求,你当前输出为空是两个核心原因导致的:
- permute函数的输出仅打印到控制台(
cout),没有写入到你创建的output文件流 - main函数中定义的
str变量未从输入文件读取内容,是空字符串,permute函数执行时不会触发任何输出逻辑
具体修改步骤
- 给
permute函数新增一个ofstream&类型的参数,用于接收输出文件流,将原有的cout输出逻辑改为输出到传入的文件流 - 在main函数中读取输入文件的内容到
str变量 - 调用
permute时传入已经打开的output文件流 - 操作结束后关闭输入输出文件流,确保缓存内容写入磁盘
修改后完整代码
#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
相关产品推荐
相关产品推荐

