Unix/Linux环境下如何将C++程序运行结果输出到文本文件
如何将C++程序的运行结果重定向到文本文件
你之前的操作错在重定向了编译命令的输出,而非程序运行的输出。g++ main.cpp > test.txt 只会把编译过程中的警告、错误信息写入test.txt,和程序运行结果完全无关。
正确的做法分两种:
方法一:运行程序时重定向输出
这是最常用的方式,不需要修改代码:
- 正常编译代码:
g++ main.cpp -o main - 运行程序时用重定向符号将输出写入文件:
- 仅捕获标准输出(
cout的内容):./main > test.txt - 同时捕获标准输出和标准错误(
cerr的内容):./main > test.txt 2>&1或者更简洁的./main &> test.txt - 如果想追加内容到文件而非覆盖,用
>>代替>:./main >> test.txt
- 仅捕获标准输出(
方法二:在代码中直接指定输出文件
如果允许修改源代码,可以直接让程序把内容写入文件:
#include <iostream> #include <fstream> int main() { // 打开要写入的文件 std::ofstream output_file("test.txt"); if (!output_file.is_open()) { std::cerr << "无法打开文件" << std::endl; return 1; } // 把原本输出到控制台的内容写入文件 output_file << "这里是程序的运行结果" << std::endl; output_file << "多行内容也可以正常写入" << std::endl; // 关闭文件 output_file.close(); return 0; }
编译运行后,test.txt就会包含程序的输出内容。
内容的提问来源于stack exchange,提问作者user20805553
相关产品推荐
相关产品推荐

