我如何去创建任何我在代码后面定义大小的数组?
Posted
技术标签:
【中文标题】我如何去创建任何我在代码后面定义大小的数组?【英文标题】:how do i go about creating any array that i define the size for later in the code? 【发布时间】:2019-08-11 05:47:30 【问题描述】:我需要创建两个数组,它们的大小反映了我加载到程序中的两个文件中数据的大小。这些数组需要被同一解决方案中的其他 .cpp/.h 文件访问,我将如何去做?
我已经有一些代码可以做到这一点,但它是特定于函数的,我不能在其他地方使用它。
ReadFunction.h
#include <string>
#include <fstream>
#include <iostream>
static std::string read_file(const char* filepath)
FILE* file = fopen(filepath, "rt");
fseek(file, 0, SEEK_END);
unsigned long length = ftell(file);
char* data = new char[length + 3];
memset(data, 0, length + 1);
fseek(file, 0, SEEK_SET);
fread(data, 1, length, file);
fclose(file);
std::string result(data);
delete[] data;
return result;
Main.cpp
#include<iostream>
#include "Headers/ReadWFunction.h"
int main(void)
std::string file = read_file("Wally_grey.txt");
std::cout << file << std::endl;
system("PAUSE");
return 0;
这段代码工作并加载到一个文件中,然后将其写入控制台,但是我需要为两个不同大小的文件执行两次,然后将它们加载到 double 类型的一维数组中,然后与另一个数组中的一个进行比较不同的 .cpp 文件。 但是我不知道该怎么做,因为我需要声明一个数组但不给它一个大小,直到 iv 加载到文件中,因此知道数组所需的大小。此外,这些数组需要由一个名为 compare.cpp 的单独 .cpp 文件访问,我是在 readFunctions.h 文件中声明这些数组并将它们公开还是在其他地方声明它们? 我对这些东西很陌生,所以任何帮助都将不胜感激。
【问题讨论】:
你已经在你的函数中创建了一个动态大小的数组,所以你知道怎么做。但既然这是 C++,为什么不直接使用std::vector
?
... 或预先确定大小的字符串。
我没有看到问题,是什么阻止了您在函数中分配数组然后返回指向该数组的指针?这行得通,但当然,既然你是 C++ 程序员,最好的选择是std::vector<double>
。
好的,我已经完成了,但是我将如何在其他地方使用这个数组?
@JackLimerick 只需从函数中返回数组/向量,就像您在上面示例中对字符串所做的那样。
【参考方案1】:
这是一个从文件中读取双精度并将它们作为向量返回的函数
static std::vector<double> read_file(const char* filepath)
std::vector<double> v;
std::ifstream file(filepath);
double x;
while (file >> x)
v.push_back(x);
return v;
【讨论】:
谢谢!我将如何做与此相反的操作以输出 .pgm 文件? 嗯,这是一个完全不同的话题,所以你应该问一个新问题。但是您可以使用 for range 循环for (double x : v) do something with x
遍历向量以上是关于我如何去创建任何我在代码后面定义大小的数组?的主要内容,如果未能解决你的问题,请参考以下文章