Вставка структуры в вектор - PullRequest
0 голосов
/ 29 марта 2020

Я пишу программу (адресную книгу), и у меня небольшая проблема с одной из функций. Я посылаю ему свою строку, например: 1 | Джон | Смит | 333 222 111 | john@smith.pl | Хэппи-стрит 3а; 33-300 Краков | и я хочу разделить его, когда компилятор найдет «|», а затем я хочу вставить каждый из этих элементов в структуру. Я предоставляю свой код ниже.

#include <iostream>
#include <vector>
#include <windows.h>

using namespace std;

struct Addressee
{
int id = 0;
string name = "", surname = "", telephone_number = "", email = "", address = "";
};

int main()
{
vector <Addressee> someone;
Addressee inserted;
string informationaAboutAddressee [6];
cout << "Insert data about Your friend: ";
for(int i = 0 ; i < 3; i++)
{
    for(int i = 0; i < 6; i++)
    {
    getline(cin,informationaAboutAddressee[i], '|');
    }
    inserted.id = atoi(informationaAboutAddressee[0].c_str());
    inserted.name = informationaAboutAddressee[1];
    inserted.surname = informationaAboutAddressee[2];
    inserted.telephone_number = informationaAboutAddressee[3];
    inserted.email = informationaAboutAddressee[4];
    inserted.address = informationaAboutAddressee[5];
    someone.push_back(inserted);
}

for(int i = 0; i < someone.size(); i++)
{
     cout << "Addressee number " << i << ": ";
     cout << someone[i].id << " ";
     cout << someone[i].name << " ";
     cout << someone[i].surname << " ";
     cout << someone[i].telephone_number << " ";
     cout << someone[i].email << " ";
     cout << someone[i].address << " ";
}
return 0;
}

Должен ли я что-то изменить или это действительно сработает? когда я его компилирую - он работает просто отлично, но когда я применяю его к своей «основной» программе, и я хочу показать, что весь вектор адресата пуст: / есть только одно отличие - здесь я всегда пишу новую строку , но когда он работает как функция, я посылаю сюда строку, вставленную более ранней и загруженной из файла.

Я все еще новичок ie, поэтому, пожалуйста, будьте осторожны;)

Я дам вам две функции, которые должны взаимодействовать:

Addressee downloadAddresseeInfo(string addresseeInfo)
{
Adresat inserted;
int id = 0;
string name, surname, telephone_number, email, address;
string buffer [6] = informationaAboutAddressee;

    for(int i = 0; i < 6; i++)
    {
    getline(cin,informationaAboutAddressee[i], '|');
    }
    inserted.id = atoi(informationaAboutAddressee[0].c_str());
    inserted.name = informationaAboutAddressee[1];
    inserted.surname = informationaAboutAddressee[2];
    inserted.telephone_number = informationaAboutAddressee[3];
    inserted.email = informationaAboutAddressee[4];
    inserted.address = informationaAboutAddressee[5];

return inserted;
}

void downloadFromFile(vector<Addressee> &someone)
{
Addressee oneAddressee;
string addresseeInfo = "";

fstream textFile;
textFile.open("KsiazkaAdresowa.txt", ios::in);

if (textFile.good() == true)
{
    while (getline(textFile, addresseeInfo))
    {
        oneAddressee = downloadAddresseeInfo(addresseeInfo);

        someone.push_back(oneAddressee);
    }
    textFile.close();
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...