Čitanje staje zato što je razmak podrazumevani razdvajač unosa.
Najlakše, ali najmanje fleksibilno, je da smatraš da je kraj linije razdvajač. U tom slučaju, možeš da učitaš string kao:
Code:
const int SIZE = 1024;
char buffer[SIZE];
cin.getline(buff, SIZE);
ili lepše:
Code:
#include <string>
...
std::string s;
getline(cin, s);
(usput, nadam se da praviš tu klasu kao neku vežbu, pošto već imaš standardnu klasu
std::string).
Pošto se ovo pitanje često postavlja, ne bi bilo loše da se predloži neko opštije rešenje. Ono što ja trenutno koristim je šablonski efektor za čitanje citiranih stringova, sa sledećim mogućnostima:
Code:
ST str;
// Use default quotes.
cin >> quoted<ST>(str);
// Use second param as starting and closing quote.
cin >> quoted<ST>(str, "'");
// Provide separate starting and closing qoutes.
cin >> quoted<ST>(str, "[", "]");
// Define default quotes, same starting and closing quote.
defaultQuotes::set("\"");
// Define default quotes, different starting and closing quotes.
defaultQuotes::set("[", "]");
Stringolika klasa
ST mora da ima definisan operator
= za tip
const char*. Naravno, ako se na ulazu nalazi samo reč bez navodnika, podrazumeva se da čini ceo string.
Kôd je okačen uz poruku (fajl pripada jednoj mojoj servisnoj bibliotekici, i sadrži još neke efektore).