• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Użycie getline() w strókturze podczas wprowadzania danych

0 głosów
579 wizyt
pytanie zadane 5 października 2016 w C i C++ przez maciek221 Początkujący (300 p.)
edycja 5 października 2016 przez Arkadiusz Waluk

Witam :) otóż posiadam problem z funkcją getline() a mianowicie nie mogę jej użyć w strukturze podczas wprowadzania danych ponieważ wyskakuje mi błąd... o to mój kod programu

#include <iostream>
#include <iomanip>
#include <string.h>
#include <istream>
struct pizza
{

char nazwa [20];
float srednica;
int waga;
};
int main()
{
    using namespace std;
    pizza analityk;
    {
cout << "Podaj nazwe pizzy \n";
    cin.getline(analityk.nazwa[20]) ;
cout << "Podaj srednice pizzy \n";

    cin >> analityk.srednica;
    cin.get();
    cout << "Podaj wage pizzy \n";
    cin >> analityk.waga;

 

    };
    cout << "Nazwa: " << analityk.nazwa[20] << "\n" << "srednica: " << analityk.srednica <<"\n" << "waga: " << analityk.waga <<"\n";

    return 0;
}


A błąd to : |18|error: no matching function for call to 'std::basic_istream<char>::getline(char&)'|

Funkcji getline() chce użyć  ponieważ gdy użyje samego cin to gdy wpiszę więcej niż 1 słowo powstają mi białe znaki..

1
komentarz 5 października 2016 przez Arkadiusz Waluk Ekspert (291,530 p.)

Pamiętaj na przyszłość, że kod na forum wstawiamy w przeznaczony do tego bloczek code.

1 odpowiedź

+1 głos
odpowiedź 5 października 2016 przez niezalogowany

Masz kilka klamer wstawionych w złym miejscu. Tak samo using namespace jest w mainie. Funkcja cin.getline przyjmuje dwa argumenty: adres tablicy i ilość elementów  tablicy. Ty podałeś tej funkcji nie tyle co tablice, a 21 jej element. To samo robisz przy wypisywaniu tablicy. 

Poprawny kod:

#include <iostream>
#include <iomanip>
#include <string.h>
#include <istream>

using namespace std;

struct pizza
{
    char nazwa[20];
    float srednica;
    int waga;
};

int main()
{
    pizza analityk;

    cout << "Podaj nazwe pizzy \n";
    cin.getline( analityk.nazwa, 20);
    cout << "Podaj srednice pizzy \n";

    cin >> analityk.srednica;
    cin.get();

    cout << "Podaj wage pizzy \n";
    cin >> analityk.waga;

    cout << "Nazwa: " << analityk.nazwa << "\n" << "srednica: " << analityk.srednica <<"\n" << "waga: " << analityk.waga <<"\n";

    return 0;
}

 

komentarz 5 października 2016 przez maciek221 Początkujący (300 p.)
Ale w tym wypadku struktura jest wewnętrzna a ja chciałym zrobić zewnętrzną dajmy na to :D już wiem gdzie popełniłem karygodny błąd... zamiast "cin.getline( analityk.nazwa, 20);" u mnie było "cin.getline( analityk.nazwa, [20]);".. Ale gdy to zmienie to program działa mi poprawnie :)
komentarz 5 października 2016 przez niezalogowany
No dobra to pierwsze to tak z góry założyłem, że ktoś nie wie o co chodzi i sobie klamry pomieszał ;p Zmień jeszcze tak jak pisałem przy wypisywaniu na ekran analityk.nazwa[20] na analityk.nazwa :)
komentarz 5 października 2016 przez maciek221 Początkujący (300 p.)
wszystko działa jak należy :P wielkie dzięki

Podobne pytania

0 głosów
1 odpowiedź 230 wizyt
pytanie zadane 12 kwietnia 2019 w Java przez Paweł123 Nałogowiec (33,540 p.)
0 głosów
2 odpowiedzi 1,043 wizyt
pytanie zadane 12 lutego 2016 w C i C++ przez Ted0ka Nowicjusz (180 p.)
0 głosów
0 odpowiedzi 506 wizyt

93,742 zapytań

142,678 odpowiedzi

323,297 komentarzy

63,328 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...