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]);
}
그럼 나중에 내가 값을 확인하는 것을 시도하고있다 : 어떤 도움이 정말 감사하겠습니다
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 (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]);
}
}
이러한 내 샘플 출력입니다.
참고 : 시도해 보았습니다. 그러나 비트 이동이 필요한 다른 오디오 형식이 있으므로 for 루프를 사용하고 싶습니다. 반복자 (또는 포인터)에서 복사 할 수 있습니다 std::vector
의 생성자가 같은
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 _);'완료. –
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); } –