białe znaki w strumieniu std::cin>>
Ostatnio zmodyfikowano 2016-09-10 16:07
Kuba1606 Temat założony przez niniejszego użytkownika |
białe znaki w strumieniu std::cin>> » 2016-09-10 10:58:50 Witam! Przechodzę właśnie kurs programowania w C++, napotkałem jednak pewien problem :/ "Gdy używamy strumienia std::cin>> białe znaki są pomijane. Tak więc gdyby w buforze strumienia nie znajdował się przecinek, tylko biały znak - strumień by go po prostu pominął i przeszedł do kolejnego znaku. W konsekwencji druga operacja wczytywania liczby powiodłaby się, a w strumieniu pozostałyby dane:" Napisany przeze mnie program to: #include <iostream> int main() { int liczba std::cin >> liczba; std:: cout << "liczba" << liczba << std::endl; return 0; } Wciskam F9, wpisuję "12345 321. czy 2+2 wynosi 4?" i niestety nadal w buforze strumienia zostaje " 321. czy 2+2 wynosi 4?" Bufor nadal zatrzymuje się na białym znaku, stąd pytanie jaki jest tego powód?
|
|
kistel66 |
» 2016-09-10 11:12:36 A dlaczego chcesz do liczby (int) zapisywać spacje itp.? Do tekstów służy string. |
|
Kuba1606 Temat założony przez niniejszego użytkownika |
» 2016-09-10 12:00:03 Niestety w tym kursie nie została opisana funkcja "string", a ja jej nie znam, wątpię żeby wykonanie tego polecenia wymagało użycia funkcji, która nie została opisana i której nie umiem użyć... Jak więc mam to zrobić? |
|
carlosmay |
» 2016-09-10 13:47:43 |
|
marcolo2307 |
» 2016-09-10 14:57:38 Użyj std::getline( std::cin, std::string ); . Powinno to być opisane gdzieś w dalszej części kursu. |
|
carlosmay |
» 2016-09-10 16:07:54 Bufor nadal zatrzymuje się na białym znaku, stąd pytanie jaki jest tego powód? |
Bo operator >> oczekuje danych zgodnych z typem zmiennej, do której będzie wczytywał dane (tutaj int . Ten operator pomija poprzedzające białe znaki (odrzuca). Wczytuje do zmiennej 12345 i w buforze strumienia pozostają " 321. czy 2+2 wynosi 4?" - ze spacją na początku. To co zostało można dalej pobierać, bądź wyczyścić. np: { int a; int b; char ch; cin >> a >> ch >> b; cout << a << ' ' << ch << ' ' << b << '\n'; } |
|
« 1 » |