gpt4 book ai didi

基于外部文件的 C++ 数组

转载 作者:行者123 更新时间:2023-11-28 06:16:04 26 4
gpt4 key购买 nike

我的问题相对简单(至少在我看来是这样)。假设我有一个包含 9 行数字的文件“test.txt”:

8 4
1.2 2.3
3.4 4.5
2.8 2.1
3.1 9.4
1.2 2.3
3.4 4.5
2.8 2.1
3.1 9.4

第一个数字 (8) 告诉我第一行后面有多少行 float ,另一个 (4) 是进一步计算所需的数字。然后我们有一个包含点坐标的 8x2 表。现在我尝试编写一个简单的函数,它(一旦被调用)将根据外部文件的内容创建我的数据。

这是我的代码:

// Function to display matrix
void showMatrix(float *matrix, int size)
{
for (int x = 0; x < size; x++) {
printf("%5f ",*matrix);
matrix++;
}
matrix -= size;
printf("\n");
}

// Function to upload single file
void loadInputFile(std::string file_name, float* data_X, float* data_Y, int& data_size, int& centre_interval) {

// Open text file
std::ifstream dataFile;
dataFile.open(file_name.c_str());
if (!dataFile.good())
return;

// First line contains data size and another number:
dataFile >> data_size >> centre_interval;
printf("Loading data...\nLoaded values: dataSize = %d, centreInterval = %d\n", data_size, centre_interval);

// Create data tables under specified pointers:
data_X = new float[data_size];
data_Y = new float[data_size];
printf("Created table of size %d\n", data_size);

for (int i = 0; i < data_size; i++) {
dataFile >> data_X[i] >> data_Y[i];
}

// No error - loaded correctly
showMatrix(data_X, data_size);

// Close file
dataFile.close();
}


int main(int argn, char ** argc) {

// I want it to be filled by my function
float* dataX;
float* dataY;
int dataSize;
int centreInterval;

// My file name existing in the same path
std::string filename = "test.txt";

// Calling my function
loadInputFile(input_names[i], dataX, dataY, dataSize, centreInterval);

// Loaded correctly
printf("Data load results:\n dataSize = %d, centreInterval = %d\n", dataSize, centreInterval);

// Error :/
showMatrix(dataX, dataSize);

return 0;
}

我能够将这些数据正确地存储在我的函数中,但是我将它传递到外部的方式似乎存在错误。非常感谢指出我的错误。

最佳答案

您正在dataXdataY 参数按值 传递,这意味着它们是复制的 并且在函数,您只为本地拷贝分配内存,而不是原始拷贝。

将函数改为

void loadInputFile(std::string file_name, float*& data_X, float*& data_Y, int& data_size, int& centre_interval)

关于基于外部文件的 C++ 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30285556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com