为了扩展 dashblinkenlight 的答案,以下是两个程序可以通信的方式。不是通过一个捕获另一个的返回值,而是通过一个称为“管道”的过程,将一个程序的标准输出定向到另一个程序的标准输入。在这里,我将在一个程序中打印出一个字符串列表,然后另一个程序将在其标准输入上期望一个字符串列表,然后我将向您展示如何将两者结合使用:
// Output program
#include <vector>
#include <string>
#include <iostream>
int main()
{
using namespace std;
vector<string> v;
v.push_back("one");
v.push_back("two");
v.push_back("three");
for (int i=0; i<v.size(); ++i)
cout << v[i] << '\n';
}
// input program
#include <iostream>
#include <vector>
#include <string>
int main()
{
using namespace std;
vector<string> v;
for (string tmp; cin >> tmp; )
v.push_back(tmp);
// print the strings in reverse order
for (int i=v.size()-1; i>=0; --i)
cout << v[i] << '\n';
}
如果你自己运行第一个程序,它只会打印出 3 个字符串。如果您自己运行第二个程序,它将提示用户输入字符串,直到他使用终止命令。但是在所有最广泛使用的操作系统上,您可以将两者链接在一起。然后第一个的输出将成为第二个的输入。在类 Unix 系统上,你可以这样做:
./output_program | ./input_program
在 Windows 上,我认为它是相同的,或者非常相似。不过不确定。