Ændring af element i vector c++

Tags:    c++

Hej allesammen - jeg er ny her.
- håber i kan hjælpe mig med mit problem.

Jeg prøver at lave en simpel tlf bog, ved at oprette en vector bestående af struct's. Problemet opstår når jeg gerne vil ændre et element i denne vector.

Her er hvad jeg har lavet indtil videre. Det jeg ønsker er en rutine der ændrer post addressen i et af elementerne.
F.eks Skal brugen kunne vælge at ændre adr. i Person[0]
Skal det retuneres på en bestemt måde - eller skal jeg parse det element jeg ønsker ændret fra main() ?


---------------------------------------------------------
struct Book
{
string Name;
string Address;
int Phone;
};

void InsertData(vector<Book> &insert);
void Print(vector<Book> &PrintData);
void ChangeAdr(vector<Book> &NewAdr);

using namespace std;

int main(int argc, char *argv[])
{
vector<Book> Person;
InsertData(Person);
Print(Person);
ChangeAdr(Person);
Print(Person);

system("PAUSE");
return EXIT_SUCCESS;
}


void InsertData(vector<Book> &Insert)
{
Book x;
cout << "Enter name: ";
getline(cin,x.Name);
cout << "Enter address: ";
getline(cin,x.Address);
cout << "Enter phone number: ";
cin >> x.Phone;
Insert.push_back(x);
}

// Simpel ver. af print rutinen.
void Print(vector<Book> &PrintData)
{
cout << "\\nName " << PrintData[0].Name
<< "\\nAddress: " << PrintData[0].Address
<< "\\nPhone: " << PrintData[0].Phone << "\\n\\n";
}

void ChangeAdr(vector<Book> &NewAdr)
{
Book x;
cin.ignore();
cout << "Enter new address: ";
getline(cin,x.Address);

// Hvordan smider jeg det tilbage i f.eks.
// Person[0]
}

--------------------------------------------------------

På forhånd tak




2 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
hvis din print virker kan du vel skrive det samme.
getline(cin,NewAdr[0].Address);

eller

string Addresse;
getline(cin,Addresse);
NewAdr[0].Address=Addresse;

Men iøvrigt synes jeg at du bør ændre funktionen til kun at tage 1 person og ikke alle personer.



Hvis det er den første person i listen:
NewAdr[0].Address = x.Address;

Men da du kun bruger Adress i x og kun for at læse over i NewAdr[0], var det nok bedre:

void ChangeAdr(vector<Book> &NewAdr)
{
cin.ignore();
cout << "Enter new address: ";
getline(cin, NewAdr[0].Address);
}

Og som Nørden skriver; det var nok bedre om ChangeAdr kun fik en reference til den ene person der skal have adressen ændret.



t