2011-02-11 72 views
2

如果這段代碼將一個對象/圖像保存到文件中。什麼需要修改它實際上cout圖像的二進制數據流?謝謝!cout二進制數據

if (frame && frame->Contains(ID3FN_DATA)) 
    { 
    cout << "*** extracting picture to file \"" << argv[2] << "\"..."; 
    frame->Field(ID3FN_DATA).ToFile(argv[2]); 
    cout << "done" << endl; 
    } 
+2

你在使用什麼庫?答案將針對該庫,因爲這不是C++規範的一部分。 – templatetypedef 2011-02-11 03:37:31

+0

@templatetypedef,它來自ID3lib,我只是想代替這個:`frame-> Field(ID3FN_DATA).ToFile(argv [2]);`發送`frame-> Field(ID3FN_DATA)`到`cout` – cube 2011-02-11 04:01:07

回答

2

我不熟悉這個圖書館特別,但網站上的文檔表明,一旦你有ID3_Field對象,你可以使用ID3_Field::BinSize(),並從ID3_Field::GetRawBinary()原始字節的原始二進制大小。一旦你有這兩個參數,你可以通過調用

myOStream.write((char *)field->GetRawBinary(), field->BinSize()); 

我不知道,如果這是去工作,因爲我從來沒有使用這個庫寫二進制數據到任何ostream,包括cout,但在最不直觀的是這是有道理的。

希望這會有所幫助!