正在创建指向结构的指针数组
Creating an array of pointers to struct
我很难理解如何创建指向结构的指针数组。我试着在论坛中查找类似的例子和线程,但我仍然无法让我的代码工作!因此,我相信我写了一段丑陋的代码,我不知道哪里出了问题,也不知道如何修复它。这是代码:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct Movie
{
string name;
int numawards;
int nomination;
int year;
};
void *readfile(ifstream &infile, int &n);
int main()
{
ifstream infile;
int n = 0;
infile.open("old_movies.txt");
Movie *oldmovies;
oldmovies = readfile (infile, n);
return 0;
}
//*function documentation//
void *readfile (ifstream &infile, int &n)
{
infile >> n;
Movie *movies;
movies = new Movie[n];
for (int i = 0 ; i < n ; i++)
{
infile >> movies[i]->year >> movies[i]->numawards >> movies[i]->nomination;
infile.ignore();
infile.ignore();
getline(infile, movies[i]->name);
cout << movies[i]->year << " " << movies[i]->numawards << " " << movies[i]->nomination << " " << endl << movies[i]->name<< endl; //the cout here is to test and see if the code works.
}
return movies;
}
这个代码的目的是读取一个txt文件,其中包含电影名称、奖项数量、提名方式和制作年份,然后使用指针打印出来。以下是文件的样子:
2
1935 1 3
The Dark Angel
1935 4 6
The Informer
1935 1 8
前4位代表年份,第二位代表获得奖项的次数,最后一位代表获得提名的次数。
不管怎样,我被困在这一部分,我真的不知道在这里该做什么。我只是希望这个代码不会那么糟糕,以至于有很多东西需要更改。如有任何帮助或建议,我们将不胜感激。
让我们看看这里有什么:
Movie *movies;
movies = new Movie[n];
这将分配一个Movie
实例数组。要动态分配指针数组,需要将其更改为
Movie** movies;
movies = new Movie*[n];
现在在for循环中,您需要分配每个Movie
实例:
movies[i] = new Movie();
您还应该更改readfile()
以返回Movie**
而不是void*
,这样以后就不必使用任何强制转换。
但是你真的需要一个指针数组吗?为什么不使用structs数组呢。这将避免额外的间接级别,并使您的代码更加简单。
相关文章:
- 指向指向字符数组的指针数组的指针
- 通过指向指针数组的指针访问子类的属性
- C++,指针数组,指向双链表中的条目
- 在C++中,如何初始化指向wchar_t*的指针数组(生成wchar_t**)
- C++从函数指针数组调用函数
- 关于指向指针数组的指针
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 将链表转换为指针数组时出错
- C++ 对象指针数组的复制构造函数
- C++ - 循环访问指针数组会导致错误
- 删除指针数组 (C++) 中的元素
- 如何循环访问 cpp 中的函数返回的字符指针数组
- 将函数指针数组中的函数指针作为模板参数传递
- Google Or-Tools Glop:如何创建指向 const 对象的指针数组?
- 具有推导参数的模板函数指针数组变量
- 如何模板化堆栈分配的多态指针数组到接口,包括派生类型的相应点?
- C++指针数组到字符数组中的特定位置
- 如何在C++中复制指针数组的数据
- 初始化类中的指针数组,并在另一个类中检索它
- 尽管直接设置了指针数组,但仍为空