getline a tablica

0

Witam,
Witam, piszę prosty program do tworzenia rozgrywek pucharowych i mam fragment, w którym użytkownik wpisuje nazwy drużyn:

string teams_base[teams_quantity];
cout<<"Enter team names: "<<endl;
for (int i=1;i<teams_quantity;i++) //teams enter
    {
    cout<<"Team "<<i+1<<": ";
    getline(cin,teams_base[i]); 
    }

Program jednak nie do końca działa, gdyż omija on pierwszą drużynę. Następne mogę podawać bez żadnego problemu. Wie ktoś o co chodzi? (Dopiero zaczynam używać getline'a). Swoją drogą, mogłem też po prostu użyć std::cin, ale zależy mi na tym, aby dało się wprowadzać nazwy ze spacjami w środku (chyba, że da się to zrobić cin-em).

2

cin nie wyjmuje znaku nowej linii z wejścia standardowego, więc getline pierw widzi pustą linię.
Przed pętlą:

cin.ignore(numeric_limits<streamsize>::max(), '\n');
2

Tak poza tym, jeśli teams_quantity nie jest constexpr (stałą znaną w momencie kompilacji), to wykraczasz poza standard — kompilator ma święte prawo się obrazić na coś takiego. Używaj raczej std::vector.

Poza tym, tablice itd. w C++ są numerowane od zera, a Ty zaczynasz od jedynki — dlaczego?

0

Wiem, że są numerowane od zera. To była desperacka próba przetestowania na zasadzie "a może zadziała" (tak wiem że to głupie). Po tym jak nie zadziałało wkleiłem kod na forum. Przedtem była to oczywiście wartość 0.

1 użytkowników online, w tym zalogowanych: 0, gości: 1