1
我想輸出一個zlib壓縮的字符串到標準輸出,併發生了一些奇怪的事情。成功運行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();
在這兩種情況下,沒有什麼是輸出標準輸出已損壞。在iostream代碼的情況下,cout.good()返回true,不設置失敗位。當使用fwrite我檢查恐怖,這也很好!標準輸出被打破,我的意思是沒有什麼是通過標準輸出輸出的應用程序的其餘部分。我嘗試用各自的接口重置stdout錯誤狀態無濟於事。
我強烈地傾向於認爲這是一個圖書館錯誤,因爲像這樣的事情真的不應該默默地失靈。
所有這一切都發生在運行XCode 4.2的OSX 10.6下。
您在檢查錯誤之前是否嘗試過沖洗? 'fflush(stdout)'或'cout.flush()' – ibid 2011-12-20 06:02:46
您是否檢查過fwrite的返回值以查看寫入的字節數?我不認爲這是問題,因爲stdout不輸出的應用程序的其餘部分,但值得一檢查。 – Corbin 2011-12-20 06:04:18
在你的C++代碼中,你調用了output [c],但是c沒有在代碼中定義。這應該是輸出[我]? – DRH 2011-12-20 07:53:14