Salve,

mi domandavo se c'era un modo in C++ per impachettare il contenuto di una o più strutture in un unica stringa binaria, mi piacerebbe fare una cosa del genere dopo che ho popolato le seguenti strutture:

codice:
#include <windows.h>
#include <stdlib.h>

const unsigned int STANDARD_WAVEFORMAT_SIZE = 16;

struct WAVE_FORMAT
{
	WORD	wFormatTag;
	WORD	wChannels;
	DWORD	dwSamplesPerSec;
	DWORD	dwAvgBytesPerSec;
	WORD	wBlockAlign;
	WORD	wBitsPerSample;
};

struct RIFF_HEADER
{
	TCHAR	szRiffID[4];		// 'R','I','F','F'
	DWORD	dwRiffSize;
	TCHAR	szRiffFormat[4];	// 'W','A','V','E'
};

struct FMT_BLOCK
{
	TCHAR		szFmtID[4];	// 'f','m','t',' '
	DWORD		dwFmtSize;
	WAVE_FORMAT	wavFormat;
};

struct DATA_BLOCK
{
	TCHAR	szDataID[4];	// 'd','a','t','a'
	DWORD	dwDataSize;
};

void GetARiffChunk(RIFF_HEADER& rh);
void GetADataBlock(DATA_BLOCK& db);
void GetAWaveFormat(WAVE_FORMAT& wf);
void GetAFmtBlock(FMT_BLOCK& fb);

void main()
{
	RIFF_HEADER rh;
	FMT_BLOCK fb;
	DATA_BLOCK db;

	GetARiffChunk(rh);
	GetAFmtBlock(fb);
	GetADataBlock(db);

	// impachetta le strutture appena popolate

	system("pause");
}

void GetARiffChunk(RIFF_HEADER& rh)
{
	rh.dwRiffSize = sizeof(rh);
	rh.szRiffID[0] = 'R';
	rh.szRiffID[1] = 'I';
	rh.szRiffID[2] = 'F';
	rh.szRiffID[3] = 'F';
	// Lets add the wave tag id.
	rh.szRiffFormat[0] = 'W';
	rh.szRiffFormat[1] = 'A';
	rh.szRiffFormat[2] = 'V';
	rh.szRiffFormat[3] = 'E';
	rh.dwRiffSize = sizeof(rh);
};

void GetADataBlock(DATA_BLOCK& db)
{
	db.szDataID[0] = 'd';
	db.szDataID[1] = 'a';
	db.szDataID[2] = 't';
	db.szDataID[3] = 'a';
	db.dwDataSize  = 4096;
}

void GetAWaveFormat(WAVE_FORMAT& wf)
{
	wf.dwAvgBytesPerSec = 0;
	wf.dwSamplesPerSec  = 0;
	wf.wBitsPerSample   = 0;
	wf.wBlockAlign      = 0;
	wf.wChannels        = 0;
	wf.wFormatTag       = 1;
}

void GetAFmtBlock(FMT_BLOCK& fb)
{
	WAVE_FORMAT wf;
	GetAWaveFormat(wf);
	fb.szFmtID[0] = 'f';
	fb.szFmtID[1] = 'm';
	fb.szFmtID[2] = 't';
	fb.szFmtID[3] = ' ';
	fb.wavFormat  = wf;
	fb.dwFmtSize  = sizeof(fb);
}
Questo perchè vorrei creare un file .wav dove ogni chunk di raw audio data è preceduto dal formato RIFF:

http://www.codeguru.com/cpp/g-m/mult...cle.php/c8935/

grazie