Je dois lire un fichier .txt
et utiliser le premier nombre comme taille de tableau dans une fonction appelée getData
.Passer un tableau dynamique de structures C++
Dans mon code, je suis capable de lire le fichier et l'affecter à la taille du tableau listSize
. Je suis également capable de remplir le reste du tableau avec les informations .txt
. Lorsque j'imprime ce qui est dans mon tableau dans la fonction getData
, cela fonctionne.
Le problème est que lorsque j'essaie d'accéder à la matrice en dehors de la fonction getData
, mon programme se bloque. Je suis nouveau pour les pointeurs, et C++ en général. Je ne pense pas que je le passe ou l'appelle correctement. J'ai eu du mal à trouver des informations pour m'aider dans le problème.
Comment puis-je accéder aux tableaux que j'ai créés au getData
?
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
struct menuItemType
{
string menuItem;
double menuPrice;
};
void getData(int& listSize, menuItemType menuList[], int orderList[]);
int main()
{
menuItemType *menuList = 0; //-----pointers
int *orderList = 0;
int listSize;
getData(listSize, menuList, orderList);
cout << menuList[0].menuItem; //-----This is what crashes the program
return 0;
}
//-----Get Menu Function
void getData(int& listSize, menuItemType menuList[], int orderList[])
{
//-----Declare inFile
ifstream inFile;
string price, size;
//-----Open inFile
inFile.open("Ch9_Ex5Data.txt");
//-----Get Amount of Items, Convert to int
getline(inFile, size);
listSize = stoi(size);
//-----Set Array Size
menuList = new menuItemType[listSize];
orderList = new int[listSize];
//-----Get Menu
for (int x = 0; x < listSize; x++)
{
//-----Get menuItem
getline(inFile, menuList[x].menuItem);
//-----Get menuPrice convert to double
getline(inFile, price);
menuList[x].menuPrice = stod(price);
}
//------PRINT WORKS HERE ----- This print made me think i created the
//arrays correctly
for (int x = 0; x < listSize; x++)
{
cout << menuList[x].menuItem << endl
<< menuList[x].menuPrice
<< endl;
}
inFile.close();
}
Le contenu du .txt
8
Plain Egg
1.45
Bacon and Egg
2.45
Muffin
0.99
French Toast
1.99
Fruit Basket
2.49
Cereal
0.69
Coffee
0.50
Tea
0.75
Passez un pointeur sur le premier élément du tableau ainsi qu'un entier indiquant la taille du tableau. 'passe (StructArray * sa, int tailleArray)' –