1

我想将文本输出从一个程序转换为 Gui 输出,第一个程序每微秒产生一次行输出。如果我在 linux 中使用管道命令发送,第二个程序如何逐行接收并处理它?换句话说,我在 C++ 中有 main 函数,该参数是流且无限制的。谢谢

4

1 回答 1

3

程序1:

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

程序2:

#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 程序。请注意,为了使程序非阻塞,您可能希望在单独的线程上从标准输入读取。

至于您对“每微秒接收输入”的约束,这可能是不现实的……它会尽可能快地处理,但您不能依赖标准输入/输出来那么快,特别是如果您正在发送相当数量的数据。

于 2012-12-08T16:46:37.117 回答