If I want my program to print things in a more organized fashion (printing stocks, then structures, then population, etc instead of printing all of the contents of the data map in alphabetical order), would making a bunch of separate maps be the most efficient way to do it?
Depends. If all that stocks, structures, and population data doesn't fit well in one map, then you should separate them anyway. Pretty printing largely depends on writing a lot of sometimes unpleasant code, and doesn't usually get affected much by how the data is stored. If need be you can create a bunch of pointers/variables to shorten data acces from, say,
array[1][2][46][2][8][2][0] to
apointer[0] (a bit extreme of an example, but you get the picture
).
Also, there are some structures in my game that have variables themselves (namely mines, which have a finite amount of ore that can be extracted from them, as well as a specific type of mineral that's being extracted). Could I make a struct for that specific structure, then read the variables of that struct from a data file and assign them to them that way or something?
Structures generally have variables themselves
. On a more serious note, you surely can. My personal favorite is through binary files, though if you're not up for that text files may be a better option. Some ideas:
INI files are a quick and easy text file format, that you could even write a parser inside the code, if you're willing to spend the small time needed.
XML files are a bit heavy-handed unless you're storing a lot of hierarchical data. You'll definitely want to find someone else's parser library for that.
I'm not aware of any pre-designed general binary formats, so if you want to go the binary route you'd have to design the format yourself. (it's up to you whether or not that's a fun way to pass the time
)