1
我試圖在Mac OS X Snow Leopard上使用C++中的以下代碼來通過管道獲取外部程序的輸出。C++:在兩個程序中使用寬字符串時未能通過管道獲取數據
FILE * al = popen("program program.cfg", "r");
string data;
char buffer[100];
while (fgets(buffer, 100, al) != NULL)
data.append(buffer);
cout << "«" << data << "»" << endl;
pclose(al);
但是,沒有數據被打印出來。我懷疑問題在於外部程序輸出到wcout
和wclog
,但我不知道如何處理它。我也嘗試使用wstring
和fgetws
,但這也沒有幫助。
我讀到關於使用的boost :: iostreams的,再沒有運氣:
FILE * al = popen("program program.cfg", "r");
boost::iostreams::file_descriptor_source alDesc(fileno(al));
boost::iostreams::stream_buffer<boost::iostreams::file_descriptor_source> alStream(alDesc);
istream align(&alStream);
string alignOutput;
while (align) {
getline(align, alignOutput);
cout << "«" << alignOutput << "»" << endl;
}
align >> alignOutput;
alStream.close();
alDesc.close();
pclose(al);
有沒有人有一個線索,以什麼實際的問題可能是如何解決的呢?如果有人可能會問,外部程序和從管道讀取的數據需要使用wstring
,因爲我處理的數據可能是任何語言,包括中文等。
在此先感謝您的任何線索!