可以說我在下面有這段代碼,我用它來運行一個簡單的命令,如ls
,並假設輸出爲100
行。當運行命令以及如何逐行捕獲輸出時,popen會經歷什麼時間間隔?
當我們在下面的代碼中做cout << buff
時,輸出是逐字節地,逐位地或逐行地進行流傳輸還是逐行傳輸?
可以說我們要打印new_line!
因爲我們正在流式傳輸,所以每一個新行的字符串結束cout<<buff
。我們該怎麼做?
我想在這while
循環中,我們應該有一些應該檢查,它只是流(或即將流)\n
到我們的stringstream output
,它決定之後(或之前)做一些它流進輸出。
最初,我只作爲數據結構它來存儲,所以我只需要知道如何檢查\n
因爲我們bufferring並往哪裏放,增加了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;
}
謝謝,我不確定'getline()'是否可以工作,謝謝你的清除! – Logan 2013-03-01 22:59:53