如何将C++程序./a.out的运行结果保存至文本文件?
将C++程序计算结果保存到文本文件的解决方案
问题分析
你的程序目前存在两个核心问题:
- 命令行参数逻辑不匹配:当前代码仅检查输入文件参数,但提示信息要求传入输出文件,导致参数校验逻辑和提示不一致。
- 缺少结果输出逻辑:计算得到的
r变量没有任何输出操作,自然无法将结果保存到文件。
修复步骤
1. 修正命令行参数处理
更新main函数的参数检查逻辑,同时支持输入文件和输出文件两个参数:
int main(int argc, char **argv) { if (argc < 3) { std::cout << "usage: ./a.out <inputfile> <outputfile>" << std::endl; return 0; } std::string input_filename = argv[1]; std::string output_filename = argv[2]; // 后续代码... }
2. 添加结果写入文件的逻辑
计算完成后,使用std::ofstream将r中的内容写入指定输出文件。假设mybit类型可直接转换为输出格式(如整数),代码如下:
// 在search函数调用后添加: std::ofstream out_file(output_filename); if (!out_file.is_open()) { std::cerr << "无法打开输出文件: " << output_filename << std::endl; return 1; } // 遍历结果集并写入文件 for (const auto& elem : r) { // 根据mybit实际类型调整输出格式,此处假设为整数类型 out_file << elem << std::endl; } out_file.close();
3. 完整修改后的main函数
int main(int argc, char **argv) { if (argc < 3) { std::cout << "usage: ./a.out <inputfile> <outputfile>" << std::endl; return 0; } std::string input_filename = argv[1]; std::string output_filename = argv[2]; mybits e; e = load_datfile(input_filename); mybits r; search(0, 0, e, r); // 输出结果到文件 std::ofstream out_file(output_filename); if (!out_file.is_open()) { std::cerr << "无法打开输出文件: " << output_filename << std::endl; return 1; } for (const auto& elem : r) { out_file << elem << std::endl; } out_file.close(); return 0; }
正确运行命令
编译完成后,执行以下命令即可将结果保存到out.txt:
./a.out input2.dat out.txt
替代方案:标准输出重定向
若不想修改代码支持输出文件参数,可将结果输出到标准输出,再通过Shell重定向到文件:
- 修改代码将结果输出到
std::cout:
for (const auto& elem : r) { std::cout << elem << std::endl; }
- 运行时使用重定向命令:
./a.out input2.dat > out.txt
内容的提问来源于stack exchange,提问作者hadj
相关产品推荐
相关产品推荐

