Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Problem] Tekst w string


Rekomendowane odpowiedzi

Opublikowano

Witam. Mam problem z którym nie mogę sobie poradzić. Mam taki kod : ( Podaję tylko część kodu która nie działa poprawnie )

void nowa_gra()
{
 int wiek;
 string nazwa_druzyny;
 string imie_nazwisko;
 cout << "Podaj nazwe Twojej druzyny :" << endl;
 cin >> nazwa_druzyny;
 cout << "Podaj Imie i Nazwisko :" << endl;
 cin >> imie_nazwisko;
 cout << "Podaj wiek :" << endl;
 cin >> wiek;
 zalozyles();
 cout << "Nazwa druzyny : " << nazwa_druzyny << endl;
 cout << "Imie i Nazwisko : " << imie_nazwisko << endl;
 cout << "Wiek : " << wiek << endl;
}

 

Jak pewnie się domyślacie chodzi o to, aby podać nazwę drużyny, imię i nazwisko oraz wiek, a następnie program ma to wypisać. Co w tym dziwnego ? Chodzi o to, że po kompilacji kodu program uruchamia się poprawnie, ale nie działa poprawnie. przejdźmy do mojego problemu. Kiedy w programie mam wpisać nazwę drużyny i wpiszę np. "Wiocha" to działa poprawnie i pokazuje mi się Podaj imie i nazwisko, a następnie wiek. Ale gdy wpiszę w nazwie drużyny "Wiocha Super" to wtedy program pomija "Podaj imię i Nazwisko" i przechodzi do "Podaj wiek". To samo kiedy wpisze w Imie i Nazwisko imię i nazwisko oddzielone spacją. Wtedy pomija podanie wieku.

A właśnie po wpisaniu "Wiocha Super" i pominięciu "Podaj Imię i Nazwisko" to wtedy program wypisuje w "Imie i Nazwisko" drugi człon nazwy drużyny czyli "Super".

Tak, wiem. Napisałem to bardzo chaotycznie i nie każdy może zrozumieć o co mi chodzi.

Kocham mame

Opublikowano

Użyj getline() ponieważ operator >> traktuje spacje jako separator i dlatego wczyta tylko jedno słowo

string nazwa_druzyny;
getline (cin,nazwa_druzyny);
cout << "Nazwa druzyny : " << nazwa_druzyny << endl;

Chcesz zarobić na własnym cheacie/bocie? Pisz na PM

Cracking, analiza programu/strony, boty (także web), cheaty

kwoh2cmd.png

Opublikowano

Nie wiem dlaczego, ale teraz nawet nie mogę nic wpisać w Nazwie drużyny oraz imieniu i nazwisku. Program od razu chce abym podał wiek.

 

	
void nowa_gra()
{
 int wiek;
 string nazwa_druzyny;
 string imie_nazwisko;
 cout << "Podaj nazwe Twojej druzyny :" << endl;
 getline( cin, nazwa_druzyny );
 cout << "Podaj Imie i Nazwisko :" << endl;
 getline( cin, imie_nazwisko );
 cout << "Podaj wiek :" << endl;
 cin >> wiek;
 zalozyles();
 cout << "Nazwa druzyny : " << nazwa_druzyny << endl;
 cout << "Imie i Nazwisko : " << imie_nazwisko << endl;
 cout << "Wiek : " << wiek << endl;
}

Kocham mame

Weteran
Opublikowano

Właściwie to nie pomija, tylko podaje drugi wyraz do następnego strumienia. W strumieniu nie może być nic od tak sobie pominięte.

Załóżmy że mam coś takiego:

cin>>zmienna;
cin>>zmienna2;

 

Wpisujemy w konsoli wyraz "abc def"

Zmienna będzie miała wartość 'abc' a zmienna2 wartość 'def'.

 

@Edit @Up

Kod wygląda dobrze.

Opublikowano

Ok. Już wyjaśnione.

Użyj getline() ponieważ operator >> traktuje spacje jako separator i dlatego wczyta tylko jedno słowo

string nazwa_druzyny;
getline (cin,nazwa_druzyny);
cout << "Nazwa druzyny : " << nazwa_druzyny << endl;

 

Zajrzałem do jednego z kursów i znalazłem, że przed użyciem funkcji getline(); trzeba jeszcze użyć funkcję cin.sync();

Tak zrobiłem i teraz działa.

 

Właściwie to nie pomija, tylko podaje drugi wyraz do następnego strumienia. W strumieniu nie może być nic od tak sobie pominięte.

Załóżmy że mam coś takiego:

cin>>zmienna;
cin>>zmienna2;

 

Wpisujemy w konsoli wyraz "abc def"

Zmienna będzie miała wartość 'abc' a zmienna2 wartość 'def'.

 

@Edit @Up

Kod wygląda dobrze.

 

Również mi działa :)

Kocham mame

  • 4 tygodnie później...
Opublikowano

@autor

jeśli masz zmienne, w tym wypadku string, i definiujesz ją po uruchomieniu, piszesz "wiocha super" to program traktuje to jako 2 zmienne zdefiniowane po kolei. Możesz równie dobrze podać odrazu wartości wszystkich zmiennych. I jeszcze na dodatek, jeśli masz imię i nazwisko do zdefiniowania to żeby program nie potraktował tego jako kolejne zmienne dodaj zamiast spacji podłogę ( _ ). Niestety nic bardziej nie pomogę bo piszę z telefonu. ;) pozdrawiam

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...