我打开了一个管道到一个读取文本输入的程序。
这是我目前正在做的
FILE* p = popen("myprogram", "w");
string myBuff;
//write something to myBuff
fprintf(p, "%s\n", myBuff.c_str());
这就是我想做的
p = popen("myprogram", "w");
p << "my text" << endl;
Boost 有这方面的东西吗?我认为这是一个经常遇到的问题,通常是如何解决的?
最佳答案
一个不涉及 Boost 的快速而肮脏的解决方案是简单地重载 operator<<
为你的FILE*
类型。
FILE* operator<<(FILE* fptr, const std::string& input_string)
{
fprintf(fptr, "%s\n", input_string.c_str());
return fptr;
}
这不适用于像 std::endl
这样的流修饰符等,但如前所述,它以一种快速而肮脏的方式完成了工作。 Boost 本身没有任何问题,但我认为只是想获得使用 operator<<
的能力。语法,有点重。
关于c++ - 在 C++ 中将文本发送到管道的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9794426/