假设我在下面有这段代码,我用它来运行一个简单的命令,比如ls
假设输出是100
行长的。
当我们cout << buff
在下面的代码中进行操作时,输出是逐字节、逐位还是逐行传输,或者间隔是多少?
假设我们想new_line!
在流式传输时打印每个新行的字符串结尾cout<<buff
。我们怎么能这样做?
我在想,在那个while
循环中,我们应该有一些东西来检查它是否刚刚流入(或即将流入)\n
到我们的 stringstreamoutput
中,并且它决定在流入输出之后(或之前)做一些事情。
最初我将把它变成数据结构来存储,所以我只需要知道如何在缓冲时检查,\n
以及在哪里放置添加的函数new_line!
或我想做的任何事情。
这是代码:
#include <iostream>
#include <stdio.h>
using namespace std;
// imaginary
// stringstream output;
int main() {
FILE *in;
char buff[512];
if(!(in = popen("ls -sail", "r"))){
return 1;
}
while(fgets(buff, sizeof(buff), in)!=NULL){
// output << buff;
// if there is a new line
// output << "new_line!";
cout << buff;
}
pclose(in);
return 0;
}