我有一个像
template <class Type>
myFunc(Type** arrayToBeFilled);
我这样称呼它:
double* array = NULL;
myFunc(&array);
在函数内部,我使用 strtod 函数读取和解析数字:
//这里是文件打开,获取每行的行数和双打数
...
char *inputString = new char[LONG_STRING_SIZE];
char *pNext = NULL;
(*arrayToBeFilled) = new Type[length*rowSize];
for (int i=0; i<length; i++)
{
source.getline(inputString, LONG_STRING_SIZE);
pNext = NULL;
for (int j=0; j<rowSize; j++)
{
double d = strtod(inputString, &pNext);
(*arrayToBeFilled)[i*rowSize+j] = d;
inputString = pNext;
pNext = NULL;
}
}
变量 d 仅用于使用调试器进行检查 - 运行时就可以了。但是在填充数组后我尝试打印它(只是为了检查)
for (int i=0; i<length; i++)
{
for (int j=0; j<rowSize; j++)
{
cout<<(*arrayToBeFilled)[i*rowSize+j]<<" ";
}
cout<<"\n";
}
这里出现了糟糕的输出 - 其他数字,有时是堆损坏等等。我在函数内外打印它 - 结果相同。而且我不能删除这个数组,也不能删除这个函数——运行时错误跟着我!