私はstdoutにzlib圧縮された文字列を出力しようとしていて、本当に奇妙なことが起こります。stdoutサイレントエラー
何も出力されないいずれの場合もfwrite((void*)output, 1, numbytes, stdout);
OR
for(int i=0; i != numbytes; ++i)
cout.put(output[c]);
if(!cout.good())
throw error();
:(すべての正しい戻り値をチェック)に成功したzlibのdeflate操作を実行した後、私は出力にこれらのいずれかの方法でフォーマットされていない結果を試してみてくださいstdoutが壊れています。 iostreamコードの場合、cout.good()はtrueを返し、failbitsは設定されません! fwriteを使うと、ferrorとthats fineをチェックします。 stdoutが壊れているとは、残りのアプリケーションセッションでは何も出力されないということです。私は無駄にそれぞれのインターフェイスでstdoutエラー状態をリセットしようとしました。
私はこれがライブラリエラーであると強く思っています。このようなことは静かに誤動作しないようにしてください。
すべてこれは、XCode 4.2を実行しているOSX 10.6で発生しています。
エラーをチェックする前にフラッシュを試みましたか? 'fflush(stdout)'または 'cout.flush()' – ibid
fwriteの戻り値を調べて、書き込まれたバイト数を確認しましたか?私はそれがアプリケーションの残りの部分を出力していないstdoutのために問題だとは思わないが、チェックの価値がある。 – Corbin
あなたのC++コードでは、あなたはoutput [c]を呼び出していますが、cはコードに定義されていません。それはアウトプット[i]になっていますか? – DRH