c ++流输入过程

时间:2012-12-08 16:37:32

标签: c++ stream pipe

我想将一个程序的文本输出转换为Gui输出,第一个程序每微秒产生一行输出。如果我在linux中用pipe命令发送,第二个程序如何逐行接收和处理?换句话说,我在C ++中有主要功能,这个参数是流和无限的。 谢谢

1 个答案:

答案 0 :(得分:3)

<强> PROGRAM1:

#include <iostream>
int main()
{
    std::cout << "Program1 says Hello world!" << std::endl; // output to standard out using std::cout
}

<强> Program2中:

#include <iostream>
#include <string>
int main()
{
    std::string line;
    while (std::getline(std::cin, line)) // Read from standard in line by line using std::cin and std::getline
    {
         std::cout << "Line received! Contents: " << line << std::endl;
    }
}

现在,如果你运行Program1并管道进入Program2,你应该得到:

  

$ ./Program1 | ./Program2
  Line Recieved! Contents: Program1 says Hello world!

请注意Program2将继续读取标准输入,直到达到EOF(或发生某些错误)。

对于您的情况,Program1是生成输出的东西,Program2是消耗输出的GUI程序。请注意,为了使程序无阻塞,您可能希望在单独的线程上从标准输入读取。

至于你的“每微秒接收输入”的约束可能不太现实......它会尽可能快地处理,但你不能依赖标准输入/输出那么快,特别是如果你'发送大量数据。