Мне было интересно, почему я теряю информацию.
Пока у меня три функции.
Функция обработки опций и две векторные функции, одна для чтения текстового файла, а другая для добавления пользовательской спецификации к тому же вектору.
Что происходит, я читаю файл и сохраняю его содержимое в векторе, а затем выбираю следующую опцию, чтобы добавить спецификацию. Для этого я использую push_back. Я вывод (или отладка), чтобы увидеть, если я был успешным. да. Поэтому я выбираю опцию, которая снова читает файл, и я возвращаюсь к тому, с чего начал. Спецификация пользователей была потеряна. И я думаю, это потому, что я распределяю его каждый раз, когда вхожу в эту опцию.
Я новичок, поэтому мой код не соответствует большинству стандартов программирования.
Вот моя первая функция, которая изолирует поля, разделенные запятыми, сохраняется в переменных-членах структуры, а затем сохраняется в векторе как элементы для каждой строки в файле.
vector<sStruct> * loadFile(char *myTextFile)
{
myStruct
sStruct;
vector<myStruct>
vectorAddress,
*vectorData = new vector<myStruct>
string
feild1, feild2, feild3, feild4;
ifstream
*inFile = new ifstream;
inFile->open( myTextFile, ios::in );
if ( !inFile->good() )
{
cout << "? File Doesnt Exist! " << endl;
}
while ( !inFile->eof() )
{
getline( *inFile, feild1, ',' );
sStruct.m_1 = field1;
getline( *inFile, feild2, ',' );
sStruct.m_2 = field2;
getline( *inFile, field3, ',' );
sStruct.m_3; = feild3
getline( *inFile, feild4 );
sStruct.m_4 = feield4;
vectorData->push_back( sStruct );
}
inFile->clear();
inFile->close();
cout << vectorData->size();
delete inFile; // allocated obj delete to fast why bother?
return vectorData;
}
Эта функция успешно добавляет еще один элемент в вектор.
vector<sStruct> * addElement(vector<sStruct> *vAddElement)
{
sStruct addElement; // referring to the same struct.
cout << "Enter a String: ";
cin >> addElement.feild1
vAddElement->push_back( addElement );
cout << vAddElement->size() << endl;
return vAddElement;
}
Когда я в первой функции, я отлаживаю свой векторный объект, и данные из файла сохраняются. Хорошо. Поэтому я перехожу к следующей функции и добавляю строку к члену структуры, который имеет первое поле. Надеюсь, ничего не перезаписать. Я отлаживаю, чтобы убедиться и нет, все хорошо, push_back работает хорошо. Но когда я иду к своей первой функции. Все возвращается, как это было, когда начинается.
Я знаю это, потому что я читаю файл и распределяю каждый раз, когда вхожу в эту функцию. Есть ли способ предотвратить это?