---
title: "problem med array"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/162376-problem-med-array"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "Vinnaren"
published: "2007-07-09T16:24:26.000Z"
updated: "2007-07-10T14:30:37.000Z"
replies: 9
views: 806
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/162376-problem-med-array"
---

# problem med array

## #1 — Vinnaren, 2007-07-09T16:24Z

Har följande kod:

```
int main()
{
    Person person[10];
    int menyVal;
    bool go = true;

    do
    {
        if(menyVal == 1)
        {
            add();
            break;
        }
        else if(menyVal == 2)
        {
           show();
           break;
        }
        else
        {
            go = false;
        }
    }while(go);
  return 0;
}

void add()
{
    int j =3;
    string fnamn;
    string enamn;

    //Frågar användaren efter namn, adress
    cout << "Ange Förnamn: ";
    cin >> fnamn;
    cout << "Ange Efternamn: ";
    cin >> enamn;

    person[j].setFirstName(fnamn);
    person[j].setLastName(enamn);

    j+=1;
}

void show()
{
      for(int i=0; i<10; i++)
    {
        cout << person[i].getFirstName() + " " + person[i].name.getLastName() << endl;
    }

}
```

 

Undrar hur man gör när man ska skicka min array (person) mellan main, add, show. Nu kommer man bara åt den i main metoden.

Sen i metoden show, hur gör man för att få reda på hur många rader arrayen innehåller, så man slipper loopa ut massa blankrader?

Tacksam för all hjälp   :stud

Permalänk: https://www.webforum.nu/p/162376

## #2 — Peter S, 2007-07-09T16:45Z

```
void show(Person* p, int size)
{
  //use p[]
}

show(person, 10);
```

Permalänk: https://www.webforum.nu/p/2002290

## #3 — Compusa, 2007-07-09T16:48Z

Vad du gör i din add-funktion förstår jag inte eftersom du lägger in elementet på samma index varje gång, så den får du nog fundera lite över.

Enligt mig är det bättre och mindre bökigt att använda referenser istället för pekare.

```
void show(Person& person, int size)
{
    for(int i=0; i < size; i++)
    {
        cout << person[i].getFirstName() + " " + person[i].name.getLastName() << endl;
    }

}

show(person, 10);
```

Referenser vs pekare, se nedan:

```
void swap(int& variable1, int& variable2)
{
    int temp = variable1;
    variable1 = variable2;
    variable2 = temp;
}

void swap(int* variable1, int* variable2)
{
    int temp = *variable1;
    *variable1 = *variable2;
    *variable2 = temp;
}
```

Ytterligare argument: <http://www.parashift.com/c++-faq-lite/references.html#faq-8.6>

Permalänk: https://www.webforum.nu/p/2002291

## #4 — Vinnaren, 2007-07-09T17:10Z

tack, det funkade perfa   :birp 

Har ett problem till nu när jag kodade vidare. Det är när jag ska anv getline
Har följande:

```
    cout << "Ange GatuAdress: ";
    cin.getline(GatuAdress,30);
    cout << "Ange PostNummer: ";
    cin.getline(PostNummer,6);
```

 

Men får felmeddelandet:
error C2664: 'std::basic_istream\<\_Elem,\_Traits\> &std::basic_istream\<\_Elem,\_Traits\>::getline(\_Elem \*,std::streamsize)' : cannot convert parameter 1 from 'std::string' to 'char \*'	

Hur löser jag det?

tacksam för all hjälp   :stud

Permalänk: https://www.webforum.nu/p/2002299

## #5 — Peter S, 2007-07-09T17:16Z

```
getline(cin, PostNummer);
```

Permalänk: https://www.webforum.nu/p/2002300

## #6 — Vinnaren, 2007-07-09T17:19Z

fungerade inte, får nu felmeddelandet:

error C2780: 'std::basic_istream\<\_Elem,\_Traits\> &std::getline(std::basic_istream\<\_Elem,\_Traits\> &,std::basic_string\<\_Elem,\_Traits,\_Alloc\> &,const \_Elem)' : expects 3 arguments - 2 provided

5 gånger på varje:

```
    cout << "Ange GatuAdress: ";
    getline(GatuAdress, cin);
    cout << "Ange PostNummer: ";
    getline(PostNummer, cin);
```

Permalänk: https://www.webforum.nu/p/2002301

## #7 — Peter S, 2007-07-09T17:20Z

Jag lade parametrarna fel. Se ovan  :)

Permalänk: https://www.webforum.nu/p/2002302

## #8 — Vinnaren, 2007-07-09T17:29Z

tack, ett litet problem bara, 

```
    cout << "Ange GatuAdress: ";
    getline(cin, GatuAdress);
    cout << endl << "Ange PostNummer: ";
    getline(cin, PostNummer);
```

 

Ange GatuAdress: 
Ange PostNummer:

kommer upp samtidigt, hur löser man det så det kommer fram en och en som de andra innan gör?

Permalänk: https://www.webforum.nu/p/2002306

## #9 — yador, 2007-07-10T13:37Z

Du har nog läst in några tecken från tagentbortet med t ex "cin \>\> any;", men glömt bort att ta bort "enter knappen" i inmatningsbuffren som stannar kvar.

För att testa om detta är sant så kan du prova skriva cin.ignore(); precis före getline(cin,GatuAdress);

Permalänk: https://www.webforum.nu/p/2002530

## #10 — Vinnaren, 2007-07-10T14:30Z

tack, nu funkar det   :bire

Permalänk: https://www.webforum.nu/p/2002549

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/162376-problem-med-array
