簡體   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