@dmitrysergeevich198

Что здесь не правильно?

5d8d0e78eacb9768113153.jpeg
почему выделено красным,какова ошибка?
нужно с помощью стринг ввести с клавиатуры несколько фамилий.
  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ответы на вопрос 1
myjcom
@myjcom Куратор тега C++
Можно помочь с ответом, а не включать своё остроумие, подсказка небольшая.

Больше не могу

#include<iostream>
#include<string>
#include<vector>
#include<iterator>
#include<memory>
#include<sstream>
#include<Windows.h>
using namespace std;

enum class spType {ALL, SP, TH};

class Policlinic
{
public:
  Policlinic();
  ~Policlinic();
  // ... 
  void addSpecialists(const string& s);
  void addTherapists(const string& s);
  void printPersonnel(spType = spType::ALL);
  // ...
  // Геттеры Сеттеры сам по шаблону
  // ...
private:
  struct Personnel;
  unique_ptr<Personnel> m_personnel;

  string desk;
  string type;

  unsigned pharmacy = 0;

  friend istream& operator>>(istream& is, vector<string>& values);
  friend ostream& operator<<(ostream& os, const vector<string>& values);
};

struct Policlinic::Personnel
{
  vector<string> specialists;
  vector<string> therapists;
};

Policlinic::Policlinic() : m_personnel(make_unique<Personnel>())
{
}

Policlinic::~Policlinic()
{
}

istream& operator>>(istream& is, vector<string>& values)
{
  copy(istream_iterator<string>{is}, {}, back_inserter(values));
  return is;
}

ostream& operator<<(ostream& os, const vector<string>& values)
{
  copy(values.begin(), values.end(), ostream_iterator<string>{os, "\n"});
  return os;
}

void Policlinic::addSpecialists(const string& s)
{
  istringstream is(s);
  is >> m_personnel->specialists;
}

void Policlinic::addTherapists(const string& s)
{
  istringstream is(s);
  is >> m_personnel->therapists;
}

void Policlinic::printPersonnel(spType stype)
{
  switch(stype)
  {
  case spType::SP:
    cout << "Специалисты:\n"
         << m_personnel->specialists;
    break;

  case spType::TH:
    cout << "Терапевты:\n" 
         << m_personnel->therapists;
    break;

  default:
    cout << "[Весь персонал]\n";
         printPersonnel(spType::SP);
         printPersonnel(spType::TH);
    break;
  }
}

int main()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  setlocale(LC_ALL, "ru");

  Policlinic ply;

  // Для простоты
  string value;
  
  cout << "Введите врачей специалистов через пробел \n$: ";
  getline(cin, value);
  ply.addSpecialists(value);
  
  cout << "\nВведите врачей терапевтов через пробел\n$: ";
  getline(cin, value);
  ply.addTherapists(value);
 
  ply.printPersonnel(spType::ALL);

  system("pause");
}

Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы