Mac OS X SnowLeopardの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
私は中国語などを含む任意の言語のデータを扱っているので、外部プログラムとパイプから読み取るプログラムの両方を使用する必要があります。
手がかりを事前に感謝します!