【发布时间】:2021-08-24 23:55:33
【问题描述】:
假设我有以下简单的 C++ 程序,
#include <bits/stdc++.h>
using namespace std;
int main() { //no argv or argc allowed
cin >> t;
while(t--) {
int n;
cin >> n;
// do whatever
}
}
以及终端中的以下命令:
g++ -std=c++17 -O2 -lm b.cpp && ./a.out
当我运行这个命令时,它会询问我的输入,我必须像下面这样复制并粘贴输入:
7
1 2
2 4
2 6
7 5
3 6
4 6
7 2
有没有办法一次性做到这一点?我不介意每次都复制和粘贴,但是我计划制作一个 shell 脚本来为我自动执行此操作。基本上,它获取存储在远程 HTTP 服务器中的输入,然后将其传递给 C++ 程序。需要注意的是,由于某种原因,我不允许写文件,所以我不能做 fstream/freopen。
【问题讨论】:
-
只需将数据放入文件并重定向到程序即可。
./a.out < my_data_file -
需要注意的是,由于某种原因,我不允许写文件
-
旁注:
freopen无论如何都不是您大部分时间想要做的事情。我一直在竞争代码中看到它,我从来没有设法弄清楚他们为什么这样做。正常打开一个smurfing文件流就行了。 -
@kaylum 是的 user4581301 是正确的我无法写入文件,因为这不是我的机器,我只能访问 shell 脚本,其余的无法访问,所以可以在其中执行命令shell脚本本身?
-
我能做的最好的就是在脚本中有
./a.out < echo 'input goes here'。不幸的是,我的 bash 太弱了,不知道这是否适用于多行输入。幸运的是,您似乎并不关心它是否是多行的。