gpt4 book ai didi

c++将函数输出重定向到已编译的程序输入,反之亦然

转载 作者:太空狗 更新时间:2023-10-29 12:43:13 24 4
gpt4 key购买 nike

我有一个编译程序,它从 std::cin 接收一些编码数据,处理它并在 std::cout 中输出编码数据。可执行程序代码如下所示:

// Main_Program.cpp
// Compiled program that processes data.
int main(int argc, char* argv[]) {
std::string data_in;
std::string data_out;

std::cin >> data_in;
process_data(data_in, data_out);
std::cout << data_out;

return 0;
}

现在我想编写一个程序来测试它。我有一个对数据进行编码并将其发送到 std::cout 的函数和另一个从 std::cin 接收数据并将其解码的函数(我需要使用这些函数,因为它是测试的一部分)。这些函数看起来像:

void encode_and_send(std::string non_encoded_data) {
std::string encoded_data;
encode_data(non_encoded_data, encoded_data);
std::cout << encoded_data;
}

void receive_and_decode(std::string &non_encoded_data) {
std::string encoded_data;
std::cin >> encoded_data;
decode_data(encoded_data, non_encoded_data);
}

所以我想要一个程序,它使用 encode_and_send 来加载可执行程序,并使用 receive_and_decode 来捕获可执行程序的输出:

我的测试程序如下所示:

int main(int argc, char* argv[]) {
std::string testdata = "NonEncodedDataToBeProcessed";
std::string received_data;

// How can I use this three calls to correctly handle input and output data?
// One option would be to redirect cout and cin to temp files and read them
// when calling the ./Main_Program, but is there a way to avoid files and
// directily redirect or pipe the inputs and outputs?

// encode_and_send(testdata);
// system("./Main_Program");
// receive_and_decode(received_data);

// Here I can check that received_data is correct

return 0;
}

谢谢。

最佳答案

您可以创建一个临时 fifo 并使用它和一个管道来发送 std::coutMain_Programstd::cinTest_Program反之亦然,在bash 中是这样的:

mkfifo fifo # create a local fifo
Main_Program < fifo | Test_Program > fifo
rm fifo # don't need it once your finished

关于c++将函数输出重定向到已编译的程序输入,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34920913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com