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

C++ Struktury, Tablice, DANE

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
580 wizyt
pytanie zadane 11 września 2020 w C i C++ przez Kytrap Początkujący (390 p.)
Witam, mam mały problem z tym kodem, a zacznę od tego jak to zauważyłem: Wpisując w pole ADRES po spacji np "Andrzeja Nowaka 6a" kod przesuwa się od razu do rubryki wpisywania nazwiska:2 traktując słowa Nowaka jako numer telefonu ( wiem że można to zrobić w int ale jak robiłem wszystko w string to wszystko w string ), a 6a jako imię następnego klienta. czy jest jakaś możliwość zrobienia tego tak by przypisywał całe zdanie do jednej rubryki ? lub wymusić że nie można stawiać nazw po SPACJI tylko wymusić np: Andrzeja_Nowaka_6a ?

#include <iostream>
#include <string>
using namespace std;

struct informacje_o_osobie
{
    string imie;
    string nazwisko;
    string adres;
    string nr_tele;
};
int main()
{
    informacje_o_osobie osoba[5];
    for (int i = 0; i < 5 ;i++)
    {
        cout<< "podaj imie:" << i << '\n';
        cin >> osoba[i].imie;
        cout << "podaj nazwisko:" << i << '\n';
        cin >> osoba[i].nazwisko;
        cout << "podaj adres:" << i << '\n';
        cin >> osoba[i].adres;
        cout << "podaj nr.tele" << i << '\n';
        cin >> osoba[i].nr_tele;
    }
    for (int i = 0; i < 5  ;i++)
    {
        cout<<"dane klineta:" << '\n';
        cout<< "imie" <<osoba[i].imie << '\n';
        cout<< "nazwisko" << osoba[i].nazwisko << '\n';
        cout<< "adres" << osoba[i].adres << '\n';
        cout<< "nr telefonu" << osoba[i].nr_tele << '\n';
    }
    return 0;
}

2 odpowiedzi

+1 głos
odpowiedź 11 września 2020 przez j23 Mędrzec (195,260 p.)
std::getline(std::cin, osoba[i].adres);

 

+1 głos
odpowiedź 12 września 2020 przez Whiskey_Taster Pasjonat (15,610 p.)
Tak jak już tutaj ktoś napisał rozwiązanie, tak ja postaram się wytłumaczyć skąd się bierze problem.
Otóż obiekt cin pobiera dane, ale do pierwszego napotkanego białego znaku, którym jest spacja. Po natrafieniu na spację przerywa pobieranie, więc dane zostają zapisane do Twojej zmiennej. Jednakże w buforze wejścia zostają dane, które nie zostały przetworzone - to jest nigdzie nie zostały zapisane - więc przy następnym wywołaniu cin >> zmienna; zostaje pobrane następne słowo, które zostało w buforze i od razu jest ono zapisywane do zmiennej.

Rozwiązaniem jest skorzystanie z tego, co zostało już napisane w odpowiedzi, jako parametry podajesz cin, a następnie zmienną typu string.
komentarz 12 września 2020 przez j23 Mędrzec (195,260 p.)

Otóż obiekt cin pobiera dane, ale do pierwszego napotkanego białego znaku

Doprecyzujmy: nie std::cin, a operator wejścia >>.

komentarz 12 września 2020 przez Whiskey_Taster Pasjonat (15,610 p.)
Okej, dziękuję za komentarz oraz poprawę :) Dopiero od niedawna uczę się programować w C++, więc jeszcze trochę mylę się w terminologii.

Podobne pytania

0 głosów
1 odpowiedź 1,183 wizyt
pytanie zadane 25 października 2020 w C i C++ przez hicodyn Początkujący (420 p.)
0 głosów
1 odpowiedź 227 wizyt
pytanie zadane 29 czerwca 2020 w C i C++ przez pozdro600 Początkujący (260 p.)
0 głosów
0 odpowiedzi 530 wizyt
pytanie zadane 5 maja 2020 w C i C++ przez Atman Użytkownik (810 p.)

93,176 zapytań

142,185 odpowiedzi

321,979 komentarzy

62,506 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1401p. - dia-Chann
  2. 1380p. - Łukasz Piwowar
  3. 1372p. - CC PL
  4. 1370p. - Łukasz Eckert
  5. 1351p. - Tomasz Bielak
  6. 1328p. - Michal Drewniak
  7. 1312p. - Łukasz Siedlecki
  8. 1302p. - rucin93
  9. 1273p. - Adrian Wieprzkowicz
  10. 1232p. - Mikbac
  11. 1181p. - rafalszastok
  12. 1169p. - Grzegorz Aleksander Klementowski
  13. 1155p. - Piotr Aleksandrowicz
  14. 1149p. - Michał Telesz
  15. 1127p. - Mariusz Fornal
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...