Я пытаюсь сделать вектор Uint8 от Uint8 *, но по причине некоторые из значений не одинаковы. Вот мой код.Как скопировать uint8 * в вектор <Uint8> правильно
std::vector<Uint8> wav_vector = {};
Uint8* wav_buffer_;
for (unsigned int i = 0; i < wav_length_; i++) {
wav_vector.push_back(wav_buffer_[i]);
}
Позже я пытаюсь проверить значения:
for (unsigned int i = 0; i < wav_length_; i++){
if (wav_buffer_[i]!=wav_vector[i]){
cout<<i<<endl;
printf("Orignal Buffer %u\n", wav_buffer_[i]);
printf("Vector Buffer %u\n", wav_vector[i]);
}
}
Это мои выборочные выходы:
Index: 0
Orignal Buffer 208
Vector Buffer 40
Index: 1
Orignal Buffer 72
Vector Buffer 3
Index: 2
Orignal Buffer 111
Vector Buffer 183
Index: 3
Orignal Buffer 1
Vector Buffer 97
Index: 4
Orignal Buffer 0
Vector Buffer 79
Index: 5
Orignal Buffer 0
Vector Buffer 127
Index: 8
Orignal Buffer 120
Vector Buffer 40
Index: 9
Orignal Buffer 251
Vector Buffer 3
Index: 10
Orignal Buffer 182
Vector Buffer 183
Index: 16
Orignal Buffer 0
Vector Buffer 176
Index: 17
Orignal Buffer 0
Vector Buffer 200
Index: 18
Orignal Buffer 0
Vector Buffer 109
Index: 19
Orignal Buffer 0
Vector Buffer 1
Index: 24
Orignal Buffer 0
Vector Buffer 176
Index: 25
Orignal Buffer 0
Vector Buffer 200
Index: 26
Orignal Buffer 0
Vector Buffer 109
Index: 27
Orignal Buffer 0
Vector Buffer 1
Index: 32768
Orignal Buffer 16
Vector Buffer 120
Любая помощь будет действительно оценили.
Примечание: Я пробовал это, и он работает. Но я хочу использовать цикл for, поскольку у меня есть некоторые другие аудиоформаты, которые потребуют смещения бит.
std::vector<Uint8> wav_vector(&wav_buffer_[0], &wav_buffer_[wav_length_]);
Ваш 'wav_buffer_' указатель инициализирован правильно или он просто указывает куда-то? –
Sidenote: Инициализация 'vector' из массива не требует явного цикла:' std :: vector wav_vector (wav_buffer_, wav_buffer_ + wav_length _); 'Done. –
ShadowRanger
его указатель где-то в конструкторе. Uint8 * wav_buffer_; AudioFile :: AudioFile (SDL_AudioSpec * wav_file, Uint8 * wav_buffer, UInt32 wav_length): wav_file_ (wav_file), wav_buffer_ (wav_buffer), wav_length_ (wav_length) {// SDL_FreeWAV (wav_buffer); } –