C++输入输出重定向

本文详细介绍了C++中使用freopen进行输入输出重定向的方法,通过实例演示如何从指定文件读取输入并输出到另一文件,适用于编程学习与调试。

以下是我对于C/C++重定向学习的心得体会,若有不周,欢迎指教,感谢!
什么是输入输出重定向
stdin指输入数据存储的文件夹,原输入数据来源是键盘,现改变输入数据的来源为path,即重新确定输入数据来源的方向。
stdout指输出数据存储的文件夹,原输出数据到屏幕,现改变输出数据的方向为path,即重新确定输出数据的方向。
代码:

freopen("path1","mode",stdin);
freopen("path2","mode",stdout);

这么做的效果是,从path1文件读取并输入数据,并输出数据到path2文件中。
下面以VS2019举例,
代码:

#include <iostream>
using namespace std;
int main()
{
	int a, b;
	freopen("Debug\\in.txt", "r", stdin);
	freopen("Debug\\out.txt", "w", stdout);
	cin >> a >> b;
		printf("%d\n", a + b);
	fclose(stdin);  
	fclose(stdout);
	return 0;
}

这段代码的作用是:从Debug目录下的in.txt文本中读取数据a和b,并将a+b输出到Debug目录下的out.txt中。

新建文档
在Debug目录下新建in.txt和out.txt文档,并输入a和b的数据到in.txt,此时可以看到out.txt是没有数据的。
执行代码,代码执行后的截图
可以看到,此时控制台没有输出数据,打开out.txt,out.txt输出了数据3
out.txt中成功输出了数据3。

需要注意的:
是文件建立的路径要与代码中的路径一致:
Debug:\in.txt 这个路径是项目文件夹—源文件文件夹-----Debug------in.txt
而不是项目文件夹-----Debug-----in.txt 如果路径写in.txt,指的是源文件------in.txt

以上便是我对C++输入输出重定向的心得体会,欢迎指教!

在使用 Python调试器(如 `pdb` 或 IDE 自带的调试器如 PyCharm、VS Code)时,出现 **"Connection to Python debugger failed: Socket closed"** 错误,通常表示调试器尝试通过 socket 与目标进程通信时失败了,连接被关闭。 ### 常见原因及解决方法: --- #### ✅ 1. **网络或端口问题** - **原因**:远程调试器(如 VS Code 或 PyCharm)通过 socket调试服务器通信。如果端口未开放、被占用或防火墙阻止,会导致连接中断。 - **解决方法**: - 检查调试器配置的端口是否正确。 - 确保该端口没有被其他程序占用。 - 检查防火墙设置是否阻止了该端口的通信。 --- #### ✅ 2. **调试服务未正确启动** - **原因**:调试器服务器没有成功启动或提前退出。 - **解决方法**: - 如果使用 `ptvsd` 或 `debugpy`(VS Code 的调试后端),确保正确安装并启动: ```bash pip install debugpy ``` - 示例启动方式: ```bash python -m debugpy --listen 5678 your_script.py ``` - 确保你的编辑器配置了相同的 IP 和端口(如 `"host": "localhost"` 和 `"port": 5678`)。 --- #### ✅ 3. **IDE 配置错误** - **原因**:调试器配置文件(如 `.vscode/launch.json`)中的参数错误。 - **解决方法**: - 检查 `launch.json` 中的配置是否正确,例如: ```json { "name": "Python: Attach", "type": "python", "request": "attach", "host": "localhost", "port": 5678 } ``` --- #### ✅ 4. **脚本提前退出或崩溃** - **原因**:脚本执行太快或发生异常,导致调试器还没连接就退出了。 - **解决方法**: - 在脚本开头插入 `import debugpy; debugpy.listen(5678); debugpy.wait_for_client()` 来等待调试器连接。 - 或者在代码中加入等待语句,例如: ```python import time time.sleep(10) # 给调试器留出连接时间 ``` --- #### ✅ 5. **使用不兼容的调试器版本** - **原因**:不同版本的调试器之间可能存在兼容性问题。 - **解决方法**: - 确保你使用的是最新版 `debugpy`: ```bash pip install --upgrade debugpy ``` --- ### 示例代码:手动启动调试服务 ```python import debugpy # 暂停程序,等待调试器连接 debugpy.listen(5678) print("等待调试器连接...") debugpy.wait_for_client() # 正常运行代码 a = 10 b = 20 print("结果:", a + b) ``` 然后在终端运行: ```bash python your_script.py ``` 并在 VS Code 中使用如下 `launch.json` 配置进行连接: ```json { "version": "0.2.0", "configurations": [ { "name": "Python: Attach", "type": "python", "request": "attach", "host": "localhost", "port": 5678 } ] } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

农民真快落

我琢磨着也没人给我打赏呀。。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值