c++ - 在 C++ 中将文本发送到管道的正确方法

标签 c++ pipe

我打开了一个管道到一个读取文本输入的程序。

这是我目前正在做的

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/

相关文章:

c++ - (C++) 用其他数组的相应值替换字符串中找到的数组的任何值?

c++ - std::atomic::is_always_lock_free = true 到底是什么意思?

c++ - 为什么我的代码打印 r 值 2 次而不是 rvalue 和 lvalue?

python - 如何在 Python 中停止 airodump-ng 子进程?

c++ - 模板特化语法错误​​?没有把握

c++ - typedef 有效, 'using =' 无效

linux - 从共享库转储方法

c - 在我自己的简单 shell 中进行管道传输和重定向

c - 将 printf 重定向到管道 C

mysql - 在终端输出 MySQL 结果,每行一行