我需要读取.txt
文件并将第一个数字用作函数getData
中的数组大小。传递结构的动态数组C++
在我的代码中,我能够读取文件并将其指定为数组大小为listSize
。我也可以用.txt
信息填充阵列的其余部分。当我打印出getData
函数中的数组时,它可以工作。
问题是,当我尝试访问getData
函数之外的数组时,我的程序崩溃了。我对指针和一般的C++都很陌生。我认为我没有通过它或正确地调用它。我很难找到信息来帮助我解决问题。
如何访问我在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();
}
在getData
设置menuList
和orderList
的的.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
传递指向数组中第一个元素的指针以及一个表示数组大小的整数。 '通过(StructArray * sa,int sizeArray)' –