Wprowadzanie łańcuchów znakowych

0

Chciałem zapytać Was, bardziej doświadczonych osób, które stykają się z kodami pisanymi przez inne osoby np w pracy/na forum.
Który z poniżej zaprezentowanych sposobów wprowadzania danych przez obiekt cin jest najsensowniejszy/najbardziej 'estetyczny'?
Chciałbym wyrobić sobie dobre nawyki od sameog poczatku, żeby potem nie mieć z tym problemu.



cout<<"Ile wplat odnotowano? ";
int ArSize;
(cin>>ArSize).get();

lub

cout<<"Ile wplat odnotowano?";
int ArSize;
cin>>ArSize;
 cin.get();

lub

 cout<<"Nazwa naszego darczyncy: ";
    getline(cin, Tab[i].name);

Chodzi mi przede wszystkim o poradzenie sobie z takim problemem:
Załóżmy ,że zrobie tak ( przy czym nazwa naszego darczyncy bedzie dwuczłonowe)

cout<<"Nazwa naszego darczyncy: ";
cin>>Tab[i].imie;
cout<<"Kwota jaka wplacil: ";
cin>>Tab[i].kwota;

Chodzi mi również o ogólne wprowadzanie tego typu danych w pętlach.

1

getline i operator>> mają zupełnie różną semantykę.

  1. wersja z get() jest błędna, po prostu nie ma sensu. Szczególnie dziwna jest ta z wywołaniem .get() na wyniku operatora >>.
  2. cin>>Tab[i].imie; dla stringów wczyta tylko jedno słowo
  3. getline(cin, Tab[i].name); wczyta całą linię.
    Zdecyduj się co chcesz robić i rób to, ale często mieszanie wczytywania znaków i całych linii nie prowadzi do niczego dobrego.

A jeśli get() stosujesz, aby zatrzymać konsolę: zmień IDE.

0

@kq: Ten get() pewnie ma za zadanie pozbyć się \n z bufora przed użyciem getline().
@wld1337 Co do wczytywania liczb zapoznaj się z Zabezpieczenie przed wpisywaniem liter

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