fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <iterator>
  5.  
  6. class Student
  7. {
  8. public:
  9. void InputData(std::string, const std::vector<std::string>&);
  10. void OutputData(std::ostream&) const;
  11. void ResetClasses();
  12.  
  13. friend std::ostream& operator<<(std::ostream&, const Student&);
  14. friend std::istream& operator>>(std::istream&, Student&);
  15. private:
  16. std::string name;
  17. std::vector<std::string> classList;
  18. };
  19.  
  20. std::ostream& operator<<(std::ostream& os, const Student& s)
  21. {
  22. s.OutputData(os);
  23. return os;
  24. }
  25.  
  26. std::istream& operator>>(std::istream& is, Student& s)
  27. {
  28. s.classList.assign(std::istream_iterator<std::string>{is >> s.name},
  29. std::istream_iterator<std::string>{});
  30.  
  31. return is;
  32. }
  33.  
  34. void Student::InputData(std::string nm, const std::vector<std::string>& names)
  35. {
  36. name = nm;
  37. classList = names;
  38. }
  39.  
  40. void Student::OutputData(std::ostream& os) const
  41. {
  42. os << "Students name: " << name << std::endl;
  43. os << "Classes: ";
  44.  
  45. std::copy(classList.begin(), classList.end(),
  46. std::ostream_iterator<std::string>(os, "\n"));
  47. }
  48.  
  49. void Student::ResetClasses()
  50. {
  51. classList.clear();
  52. }
  53.  
  54. int main()
  55. {
  56. Student s1, s2;
  57.  
  58. std::cin >> s1;
  59. std::cout << s1;
  60. }
Success #stdin #stdout 0s 3440KB
stdin
John Geography Science Math
stdout
Students name: John
Classes: Geography
Science
Math