【发布时间】:2017-10-13 03:46:31
【问题描述】:
我有一个不知道如何解决的问题。我有一个 C++ 函数,它打开一个 .wav 文件,将样本读入一个双精度数组,该数组的索引与 .wav 文件中的样本数一样多,然后返回一个指向该数组的指针。这完美地工作。
我想要做的是读取多个 .wav 文件并将它们存储在一个二维数组中。虽然我知道会有多少个数组,但每个数组的大小会有所不同,因为所有 .wav 文件都有不同的样本数。我不知道如何为多个文件正确存储这些数据。
这是对 wav2sig 的调用,该函数打开 .wav 并返回一个指针:
double* wav2sig(std::string filepath, int & num_samples)
这是我正在处理的代码,大致。
std::string paths[3] = {"man1.wav",
"man2.wav",
"man3.wav"};
double **data = new double[3][]; //this would work in java, but not here
int num_samples[3];
for(int i = 0; i < 3; i++) {
data[i] = wav2sig(paths[i], num_samples[i]);
for(int j = 50; j < 100; j++)
std::cout << data[i][j] << " ";
std::cout << std::endl;
}
我知道返回的指针包含所有正确的数据。我只是不知道如何正确存储其中的几个。感谢您的帮助!
【问题讨论】:
-
奇怪的是,我在发布后立即尝试了这个,它似乎奏效了。将
double **data = new double[3][];更改为double **data = new double*[3];我想我没有在创建时将指针设置为数组?
标签: c++ arrays pointers audio multidimensional-array