繁体   English   中英

如何在 C/C++ 中通过命令行传递输入(不是参数)?

[英]How to pass inputs (not arguments) thorugh command line in C/C++?

假设我有以下简单的 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。

进程替换不是做到这一点的正确方法。 使用heredoc:

g++ -std=c++17 -O2 -lm b.cpp && ./a.out << EOF
7
1 2 
2 4 
2 6
7 5
3 6
4 6
7 2
EOF

一种方法是使用bash 进程替换从命令创建“文件”。 然后将该文件重定向到程序。

例子:

#!/bin/bash

data="
7
1 2 
2 4 
2 6
7 5
3 6
4 6
7 2
"

./a.out < <(echo ${data})

请注意,在这种情况下, data字符串并不是真正的多行,但对于您显示的程序来说不是必需的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM