Hallo, voor school moeten wij een programma maken dat wave data kan manipuleren (header uitlezen, echo toevoegen). Nu is dat aardig gelukt maar de manier waarop is niet zo netjes, er kan in ieder geval veel verbeterd worden. Daarom dacht ik laat ik dat programma eens om gaan schrijven naar wat netters met vectoren en filestreams (het kan goed zijn dat ik hier fout denk en dat het helemaal niet makkelijker/netter is, maar dit leek mij wel geschikt). Maar nu kan ik niet eens de wave file kopieeren.
Hier de relevante code:
Als ik dit draai en een wave-file open krijg ik een out of range exception, eerlijk gezegd zou ik zo snel niet weten hoe dit komt. Want hij zou niet verder mogen gaan dan het eind van de vector data. Het lijkt mij dat hij dit wel doet en dat ik daarom die exception krijg?
Kan iemand hier een lichtje over laten schijnen?
Hier de relevante code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| vector<signed short> data;
vector<signed short>::iterator pos = NULL;
signed short data_temp;
ifstream fWave(openWaveDialog->FileName.c_str(), ios::binary);
ofstream fWaveUit("C:\\test.wav", ios::binary);
if(fWave != NULL)
{
fWave.read(reinterpret_cast<char*> (&header), sizeof(header));
while(!fWave.eof())
{
fWave.read(reinterpret_cast<char*> (&data_temp), 2);
data.push_back(data_temp);
}
fWave.close();
}
if(fWaveUit != NULL)
{
fWaveUit.write(reinterpret_cast<char*> (&header), sizeof(header));
for(pos = data.begin(); pos < data.end(); pos++)
{
fWaveUit.write(reinterpret_cast<char*> (data.at(*pos)), 2);
}
fWaveUit.close();
} |
Als ik dit draai en een wave-file open krijg ik een out of range exception, eerlijk gezegd zou ik zo snel niet weten hoe dit komt. Want hij zou niet verder mogen gaan dan het eind van de vector data. Het lijkt mij dat hij dit wel doet en dat ik daarom die exception krijg?
Kan iemand hier een lichtje over laten schijnen?
Hymns of indigestible suppuration