在前两天的答疑中,助教发现许多同学都是通过复制粘贴的方式对程序进行输入,且不少同学在如何输入EOF上遇到了问题,本文将和大家介绍一种新的技巧——输入重定向,来更方便的调试程序。

下面将分别以vscode+命令行和Clion为例介绍这一技巧。假设这次作业的要求是统计输入的词数,以EOF为止,我们的代码可以这样写:

#include<iostream>
#include<string>

using namespace std;
int main(){
    string s;
    int count = 0;
    while(cin >> s){
        count++;
    }
    cout << count << endl;
}

编译后,也能在命令行里正常输出。

Untitled

但每一次都要自己输入测试很麻烦,有什么办法可以让我们更轻松吗?

vscode

我们可以先新建一个输入文件,叫input.txt,在里面写上我们想要的输入(注意:文件结束自然会有一个EOF,不需要手动加Ctrl+Z了)

Untitled

接下来,我们在命令行中按如下方式让这个文件代替我们的输入,不同的shell可能有不同的重定向方式,如果你使用的是windows但不知道自己用的是什么shell,建议都尝试一次或在大群中询问助教。注意空格!

cat input.txt | ./main.exe
main.exe < input.txt
./main < input.txt

Untitled

这样就方便多了。

有的同学还会觉得打这一条命令很耗时间,可以按方向键【上】回到上一条输入的指令。