[急求] VSCode 调试 C++ 如何实现输入重定向

2023-01-24 18:14:09 +08:00
 leverestfish

明天要考试了,紧急来问一下:

搜遍全网似乎没看到好的方案,不理解为什么 VSCode 在 C++ 有输入的情况下调试这方面支持做的这么差,如果有完整的使用 VSCode 优雅调试 C++ 的文档请分享一下~

提前感谢各位大佬!

1746 次点击
所在节点    程序员
10 条回复
iOCZ
2023-01-24 18:28:15 +08:00
我用 code runner 调试 c++
kkocdko
2023-01-24 18:30:26 +08:00
是类似刷算法题做 stdin 重定向么,和 c 一样用 fopen 就行,或者只用 cin 然后这么写
https://kkocdko.site/post/202201130103#redirect-cin

另外这和 vscode 半毛钱关系没有,我们不能要求一个服务无数开发者的通用软件专为自己的需求量身定制。
ysc3839
2023-01-24 19:31:48 +08:00
vvhy
2023-01-24 19:49:31 +08:00
<test.input 中间不要空格。
有空格需要写成两个字符串,是有点奇怪。tasks.json 里之前也是,现在已经可以全部写到 command 里。不过 launch.json 还没改。
learningman
2023-01-24 20:17:40 +08:00
learningman
2023-01-24 20:18:25 +08:00
原理就是 gcc 通过参数定义一个宏,然后 ifdef freopen
DeltaC
2023-01-24 20:20:34 +08:00
1.输入重定向,是 shell 干的活,你不能对调试器要求太多。
2.二楼是正解

```c

#ifdef _DEBUG_
freopen("test.input", "r", stdin)
#endif
```
3."debug 选择 external terminal 为 false 时",我这里( arch/win )是可以输入的。反倒是 code runner 要是不开 external terminal ,没法输入。
leverestfish
2023-01-24 22:10:17 +08:00
感谢大家回复,可以理解不能对 vs code 要求太多,但是人家 CLion 毕竟是实现了这个(对我来说)很方便的功能所以奢求一下

#2 #7 的回复确实是最方便的解决办法了,感谢!

@vvhy 您的意思是不要空格就能通过 args 来实现输入了?
leverestfish
2023-01-24 22:11:25 +08:00
@ysc3839 这个我搜到过,不行的,debug 的时候没有输入进去
vvhy
2023-01-24 23:59:06 +08:00
#8 我试了"args": ["< test.input"]不行,但是["<test.input"]或者 ["<","test.input"]都可以
还是用楼上的解决方法更好

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/910472

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX