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

std::cin, białe znaki

Object Storage Arubacloud
0 głosów
1,272 wizyt
pytanie zadane 22 września 2017 w C i C++ przez Resmittieno Początkujący (280 p.)
edycja 22 września 2017 przez criss
#include <iostream>

using namespace std;
string nick,pochodzenie,jestes,lubisz,chcesz,wybor ;
#include <cstdlib>
int main()
{
    do
    {
       cout << "Witaj w grze! v2" << endl;
       cout  <<endl ;

       cout << "Jak sie nazywasz:" ;
       cin  >> nick ;
       cout  <<endl ;



       cout << "Skad pochodzisz:" ;
       cin >> pochodzenie ;
       cout  <<endl ;

       cout << "Co lubisz:" ;
       cin >> lubisz ;
       cout  <<endl ;

       cout << "Po co zyjesz:" ;
       cin >> chcesz ;
       cout  <<endl ;


       cout << "Nazywasz sie:" <<nick<< " Pochodzisz z:" <<pochodzenie<< " Lubisz:" <<lubisz<< " Chcesz:" <<chcesz ;
       cout  <<endl ;
       cout  <<endl ;
       cout << "Chcesz zaczad od nowa tak/nie:" ;
       cin >> wybor ;
       system ("cls") ;

    }
while (wybor=="tak") ;





    return 0;
}

Kiedy napiszę nazwę/imię itp. składającą się z dwóch członów, to cout pod spodem jest pomijany, jak temu zaradzić? 

2 odpowiedzi

+2 głosów
odpowiedź 22 września 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)
wybrane 22 września 2017 przez criss
 
Najlepsza

Nie wiem czy dobrze Cię zrozumiałem. Chodzi Ci o to, że jest pomijany std::cin? Jeśli tak, to dzieje się tak dlatego, że:

std::cin >> napis;

Wczytuje dane tylko do białego znaku, resztę pozostawia w buforze, a z tego bufora zczytuje następne wywołanie std::cin.

Jeśli chcesz temu zaradzić, użyj std::getline(). Ta funkcja pobierze dane aż do końca linii (lub innego znaku, jest to zależne od opcjonalnego parametru).

std::getline(std::cin, napis);

Informacje na temat tej funkcji znajdziesz tutaj

 

komentarz 22 września 2017 przez Resmittieno Początkujący (280 p.)
Chodzi o to,że kiedy w "Jak się nazywa" napiszę Jan Nowak to "Skad pochodzisz" jest pomijane tj. nic tam napisac nie mozna i od razu przechodzi dalej
komentarz 22 września 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)
No to dobrze Cię zrozumiałem.
komentarz 22 września 2017 przez Resmittieno Początkujący (280 p.)
Faktycznie działa,dziękuję ! :)

Tylko jedno pytanie,po co pisać std :: ? Skoro using namespace std; to niweluje ?
komentarz 22 września 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Ja osobiście nie zalecam stosowania dyrektywy using. To, że napisałem z std:: to kwestia mojego przyzwyczajenia, w Twoim kodzie faktycznie, nie jest to potrzebne.

Niemniej jednak zachęcam do przeczytania: http://blog.malcom.pl/2009/korzystanie-z-przestrzeni-nazw-w-cpp.html
+1 głos
odpowiedź 22 września 2017 przez Jarver Użytkownik (820 p.)

//...
       cout << "Jak sie nazywasz:" ;
       getline(cin,nick);
       cout  <<endl ;
//...

 

Możesz skorzystać z funkcji getline w ten sposób, jak napisał kolega wyżej, dzięki temu pobierze Ci cały ciąg znaków. Zauważ, że gdy wpisze w imie np. "a b c" to pominie Ci trzy kolejne ciny :) i zapisz do nich te wartości które podałeś po spacji. Sprawdź to sobie. Natomiast używając getline(cin,x); możesz wpisywać do woli.
 

 

komentarz 22 września 2017 przez Resmittieno Początkujący (280 p.)
Tak jak wyżej,dziękuję ;v

Podobne pytania

0 głosów
0 odpowiedzi 706 wizyt
pytanie zadane 4 października 2017 w PHP przez Mavimix Dyskutant (8,390 p.)
+1 głos
1 odpowiedź 126 wizyt
pytanie zadane 19 lutego 2021 w C i C++ przez sebaaas Początkujący (350 p.)
0 głosów
1 odpowiedź 168 wizyt
pytanie zadane 12 marca 2016 w C i C++ przez adamszu Użytkownik (930 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...