• 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,354 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 732 wizyt
pytanie zadane 4 października 2017 w PHP przez Mavimix Dyskutant (8,420 p.)
+1 głos
1 odpowiedź 130 wizyt
pytanie zadane 19 lutego 2021 w C i C++ przez sebaaas Początkujący (350 p.)
0 głosów
1 odpowiedź 176 wizyt
pytanie zadane 12 marca 2016 w C i C++ przez adamszu Użytkownik (930 p.)

92,757 zapytań

141,679 odpowiedzi

320,441 komentarzy

62,101 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!

...