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

Wczytywanie wiersza do string'a w strukturze dynamicznej

VPS Starter Arubacloud
0 głosów
375 wizyt
pytanie zadane 12 grudnia 2019 w C i C++ przez Ganci Użytkownik (670 p.)

Chciałbym poprosić Was o pomoc w wczytywaniu wiersza do string'a w strukturze dynamicznej. "Getline" w tym przypadku jest ignorowany i program przechodzi do dalszej części.

#include <iostream>
#include <string>

struct car
{
  std::string name;
  int year;
};

int main()
{
  using namespace std;
  int k;
  cout<<"Ile samochodow chcesz skatalogowac? ";
  cin>>k;
  //car * pt = new car[k];
  car* pt;
  pt = new (nothrow) car[k];

  for(int i=0;i<k;i++)
  {
    cout<<"Samochod nr "<<i+1<<endl;
    cout<<"Nazwa samochodu: ";
    getline(cin,(pt+i)->name);
    cout<<"Rok produkcji: ";
    cin>>pt[i].year;
  }
  for(int i=0;i<k;i++)
  {
    cout<<pt[i].year<<" ";
    cout<<pt[i].name<<endl;
  }
  delete [] pt;

  return 0;
}

 

komentarz 12 grudnia 2019 przez Ganci Użytkownik (670 p.)
    getline(cin,pt[k].name);

natomiast ten zapis powoduje: "Naruszenie ochrony pamięci (zrzut pamięci)"

2 odpowiedzi

+1 głos
odpowiedź 12 grudnia 2019 przez Radfler VIP (101,030 p.)
edycja 30 grudnia 2019 przez Radfler
 
Najlepsza

Przemienne stosowanie std::cin i std::getline bywa problematyczne, ze względu na różny sposób działania tych dwóch metod (konkretnie: std::cin i std::getline inaczej obchodzą się z białymi znakami, które zostają w strumieniu). Rozwiązaniem twojego problemu będzie usunięcie białych znaków przed wykorzystaniem std::getline przy użyciu manipulatora std::ws:

cout << "Samochod nr " << i + 1 << '\n';
cout << "Nazwa samochodu: ";
cin >> ws;
getline(cin, pt[i].name);
// ewentualnie: getline(cin >> ws, pt[i].name);
+1 głos
odpowiedź 12 grudnia 2019 przez niezalogowany

przed pętlą, cin.ignore() lub cin.get() lub

string aa;
  getline(cin,aa);

 

Podobne pytania

0 głosów
0 odpowiedzi 234 wizyt
0 głosów
1 odpowiedź 444 wizyt
pytanie zadane 26 stycznia 2020 w C i C++ przez Oskardes Użytkownik (600 p.)
–1 głos
1 odpowiedź 223 wizyt
pytanie zadane 6 grudnia 2017 w C i C++ przez kacper1445 Mądrala (5,030 p.)

92,765 zapytań

141,690 odpowiedzi

320,503 komentarzy

62,106 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.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...