Я читаю из файла и с полученной информацией хочу проанализировать данные и сохранить их в своих уважаемых объектах, которые затем будут перенесены обратно в вектор. Однако, когда код сохраняет информацию в объекте, а затем помещается обратно в вектор, вектор не содержит это значение. Затем он пропускает несколько мест в векторе и начинает правильно добавлять объекты в конец файла. Есть ли способ убедиться, что все элементы будут заполнены?
Вот мои структуры:
struct Address{
string streetAddress;
string city;
string state;
string zipCode;
};
struct Customer {
string customerNum;
string customerName;
double lineOfCredit;
Address * corperateAddress;
};
Как видите, член Customer является указателем, который указывает на структуру Address.
Вот функция и некоторые переменные, используемые для кода ниже:
void readData(vector<Customer>&addCust, vector<Address>&cAdd, vector<Product>&pAdd){
Address street;
Customer add;
Product product;
vector<string> custInfo;
vector<string> custAddress;
vector<string> custProduct;
ifstream file,stock;
Здесь возникает ошибка. Я полагаю, что это в операторе if-else:
custAddress=parse(location,','); //Parse the location to go into Address struct
check = linearSearchAddress(cAdd,custAddress[0]); //Checks Address vector to see if there is the same location
street.streetAddress=custAddress[0]; //Adds 1st parse to the Struct member
street.city=custAddress[1]; //Adds 2nd parse to the Struct member
street.state=custAddress[2]; //Adds 3rd parse to the Struct member
street.zipCode=custAddress[3]; //Adds 4th parse to the Struct member
if(check==-1){ //If address is not found then add it to the Address vector
cAdd.push_back(street); //Adding objects into the Address vector
add.corperateAddress = &cAdd.back();
} else {
add.corperateAddress=&cAdd[check]; //Adds location that is within vector already
}
addCust.push_back(add); //Adding objects into Customer vector
}
cout<<addCust[0].corperateAddress->streetAddress<<endl; // Element is empty some how ?