明天要考试了,紧急来问一下:
实现输入重定向(类似于 CLion 那样)
< test.input
是不行的使用场景限制,必须要用 VSCode
只使用 Microsoft 官方的那个 C/C++ 插件
编译通过运行 Makefile 手动执行
另外,在 macOS 上如果 debug 选择 external terminal 为 false 时( VS Code 内置的 terminal )似乎是完全没办法进行手动输入,其他操作系统不清楚
搜遍全网似乎没看到好的方案,不理解为什么 VSCode 在 C++ 有输入的情况下调试这方面支持做的这么差,如果有完整的使用 VSCode 优雅调试 C++ 的文档请分享一下~
提前感谢各位大佬!
1
iOCZ 2023-01-24 18:28:15 +08:00 2
我用 code runner 调试 c++
|
2
kkocdko 2023-01-24 18:30:26 +08:00 via Android 1
是类似刷算法题做 stdin 重定向么,和 c 一样用 fopen 就行,或者只用 cin 然后这么写
https://kkocdko.site/post/202201130103#redirect-cin 另外这和 vscode 半毛钱关系没有,我们不能要求一个服务无数开发者的通用软件专为自己的需求量身定制。 |
3
ysc3839 2023-01-24 19:31:48 +08:00 via Android 1
|
4
vvhy 2023-01-24 19:49:31 +08:00 1
<test.input 中间不要空格。
有空格需要写成两个字符串,是有点奇怪。tasks.json 里之前也是,现在已经可以全部写到 command 里。不过 launch.json 还没改。 |
5
learningman 2023-01-24 20:17:40 +08:00 1
|
6
learningman 2023-01-24 20:18:25 +08:00 1
原理就是 gcc 通过参数定义一个宏,然后 ifdef freopen
|
7
DeltaC 2023-01-24 20:20:34 +08:00 1
1.输入重定向,是 shell 干的活,你不能对调试器要求太多。
2.二楼是正解 ```c #ifdef _DEBUG_ freopen("test.input", "r", stdin) #endif ``` 3."debug 选择 external terminal 为 false 时",我这里( arch/win )是可以输入的。反倒是 code runner 要是不开 external terminal ,没法输入。 |
8
leverestfish OP 感谢大家回复,可以理解不能对 vs code 要求太多,但是人家 CLion 毕竟是实现了这个(对我来说)很方便的功能所以奢求一下
#2 #7 的回复确实是最方便的解决办法了,感谢! @vvhy 您的意思是不要空格就能通过 args 来实现输入了? |
9
leverestfish OP @ysc3839 这个我搜到过,不行的,debug 的时候没有输入进去
|
10
vvhy 2023-01-24 23:59:06 +08:00
#8 我试了"args": ["< test.input"]不行,但是["<test.input"]或者 ["<","test.input"]都可以
还是用楼上的解决方法更好 |