使用for循环创建结构名称
Creating structure names using a for loop?
我如何使用这个结构并为它创建32个不同的团队名称?
要填充的结构:
typedef struct team{
int stats[4];
}Team;
这是文本文件:
patriots 300 200 500 200
rams 200 340 230 300
cardinals 300 200 450 150
...
实例化32个Team实例似乎是多余的,例如:
Team patriots;
Team rams;
Team cardinals;
...
如何创建这些实例,以便我可以通过它们的名称来识别它们?
(请参阅代码段中的最后一条注释,查看我哪里出了问题)
int main(int argc, char* argv[]){
int i = 0;
int j = 0;
FILE* file = fopen(argv[1], "r");
for(i = 0 ; i < 32 ; i++){
// Read the name
string name;
fscanf(file, "%s", name)
// Create an instance of Team by its name
/* PROBLEM : Obviously this does not work,
how to name a variable as this? */
Team name;
for(j = 0 ; j < 4 ; j++){
fscanf(file, "r", &name.stats[j]);
}
}
}
您可能还需要考虑使用std::map
或std::unordered_map
来保存数据。
这些允许您从名称(例如Rams
)映射到一些相关数据(在您的情况下是统计数据)。
std::map<std::string, team> data;
这允许您(例如)将data
视为一个由字符串索引的数组,因此您可以执行以下操作:
std::string team_name;
team temp_team;
std::cin >> team_name >> temp_team;
data[team_name] = temp_team;
这通常不是最有效的方法(它可能有点慢,而且比其他方法使用更多的内存),但它很方便,性能通常绰绰有余。
您正处于人们需要Array
的阶段。
创建一个长度为32的数组。
Team teams[32];
然后:
for(i = 0 ; i < 32 ; i++){
string name;
fscanf(file, "%s", name);
for(j = 0 ; j < 4 ; j++){
fscanf(file, "%d", &teams[i].stats[j]);
}
}
注意:若要使用团队名称,则可以向结构中添加一个新的字符串字段,然后在从文件中读取后进行赋值。
您不能这样做,因为您正在声明一个名为name的字符串。因此,当您试图声明团队时,该变量名称已经存在。
将字符串添加到对象Team中,然后将文件中的名称写入Team的实例中。
既然您有三十二个团队,那么创建一个向量来容纳所有团队。
你也可以创建Team::stats作为一个向量,这样你就可以获得每支球队不同数量的分数(稍后可能会延长分数日期和他们对阵的球队)。
typedef struct team
{
std::string name;
int stats[4];
} Team;
int main(int argc, char* argv[])
{
std::vector<Team> teams;
int i = 0;
int j = 0;
FILE* file = fopen(argv[1], "r");
for(i = 0 ; i < 32 ; i++)
{
Team team;
fscanf(file, "%s", team.name)
for(j = 0 ; j < 4 ; j++)
fscanf(file, "r", team.stats[j]);
teams.push_back( team );
}
}
相关文章:
- 如何在C++类内存结构中创建"spacer"?
- 创建结构的数组时遇到分段错误
- 如何在 c++ 中创建结构向量的映射
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- CLang:在 std::thread 中运行函数会导致结构创建BAD_ACCESS
- C++为API中定义的结构创建超类
- C++ 使用数组结构创建平衡的二叉搜索树
- 使用匿名联合为结构创建空构造函数
- 正确的结构创建
- OPENDDS-从单个IDL结构创建多个主题
- 是否可以使用给定参数为结构创建推力的功能谓词?
- MFC文档/视图体系结构-创建没有初始视图的文档
- 在c++结构创建中更快地执行
- JNA -结构创建错误
- C++中模板结构创建之间的差异
- 无法推送到由静态映射<结构创建的队列,队列>
- 为类/结构创建多个对象
- 如何从模板结构创建二维数组
- 指向从另一个结构创建的数组的指针(不确定措辞是否正确)C++
- 使用结构创建数组