Я пишу программу (адресную книгу), и у меня небольшая проблема с одной из функций. Я посылаю ему свою строку, например: 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();
}
}