根据您提供的代码和描述,发现您在函数ReadCSV中尝试传递三维数组作为参数。然而,C++ 并不直接支持三维数组的传递,因此出现了数组传参的问题。
解决方案是使用指针来传递三维数组。这里有两种方法可以尝试:
1. 使用动态分配的内存:通过动态分配内存,可以创建三维指针 temp 并将其作为参数传递给 ReadCSV 函数。
int ReadCSV(const char *FileName, char ***temp, unsigned int ColumnNumber, unsigned int RowNumber) {
// ...
}
int main() {
char ***temp1 = new char**[4];
for (int i = 0; i < 4; ++i) {
temp1[ i] = new char*[252];
for (int j = 0; j < 252; ++j) {
temp1[ i][j] = new char[STRINGSIZE];
}
}
if (ReadCSV("../Data/1.csv", temp1, 4, 252) == false) {
exit(EXIT_FAILURE);
}
// 在完成使用数组后,别忘记释放内存
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 252; ++j) {
delete[] temp1[ i][j];
}
delete[] temp1[ i];
}
delete[] temp1;
return 0;
}
2. 使用 STL 容器代替数组:使用 std::vector 来代替传递三维指针。这样可以更方便地处理动态数组,避免手动内存管理的问题。
int ReadCSV(const char *FileName, std::vector<std::vector<std::string>>& temp, unsigned int ColumnNumber, unsigned int RowNumber) {
// ...
}
int main() {
std::vector<std::vector<std::string>> temp1(4, std::vector<std::string>(252, std::string(STRINGSIZE, ' ')));
if (ReadCSV("../Data/1.csv", temp1, 4, 252) == false) {
exit(EXIT_FAILURE);
}
return 0;
}
这两种方法都可以解决您在代码中遇到的数组传参问题。选择哪种方法取决于您的需求和编程风格。希望能对您有所帮助!如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案 |