gpt4 book ai didi

c++ - 如何使用 pstreams 获得完整的流输出?

转载 作者:太空狗 更新时间:2023-10-29 19:54:40 27 4
gpt4 key购买 nike

http://pstreams.sourceforge.net/pstreams 是一个显然非常简单的库,为 C++ 重新实现了 popen()。

该库的安装非常简单,仅包含一个头文件。您可以在此处下载头文件并将其添加到您的应用程序中:
http://pstreams.cvs.sourceforge.net/viewvc/pstreams/pstreams/pstream.h?view=log

我认为我想要的非常简单:向系统发送命令并获取其输出。 pstreams 的主页(上图)和文档提供了以下示例:

redi::ipstream in("ls ./*.h");
std::string str;
while (in >> str) {
std::cout << str << std::endl;
}

它似乎运行良好,但代码实际上从输出中去除了所有空格和回车符。试试这个:

redi::ipstream in("ls -l"); /* The command has a slightly more complicated output. */
std::string str;
while (in >> str) {
std::cout << str
}
std::cout << std::endl;

我们得到一个没有任何空格的超长连接字符串。

我已尽力理解文档,而我最接近的解决方案是:

 redi::ipstream in("ls -l");
std::string str;
while (!in.rdbuf()->exited()) {
in >> str;
}
std::cout << str << std::endl;

但是,输出在第一个空格处被完全截断。

我被困住了。

相关问题:
popen equivalent in c++
How to execute a command and get output of command within C++ using POSIX?

主持人注意:这个问题和上面的其他两个问题需要一个 pstreams 标签。

最佳答案

流式运算符 >> 旨在一次读取一个单词到 std::string,同时跳过周围的空格,就像读取数字时一样。

如果您想一次读取整行文本,请改用 getline。

std::getline(in, str);

关于c++ - 如何使用 pstreams 获得完整的流输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5309020/

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