15 // Para no exportar los símbolos (uso interno de este módulo)
18 /// Saca espacios de una palabra
19 std::string strip(std::string s)
21 std::istringstream ss(s);
26 /// Devuelve palabra hasta el caracter indicado
27 std::string get_hasta(std::istream& is, char hasta)
30 std::getline(is, s, hasta);
37 input(const std::string& filename)
39 std::ifstream f(filename.c_str());
42 Persona::sexo_type sexo = Persona::M;
43 Persona::sexo_type opuesto = Persona::F;
45 while (std::getline(f, l))
48 // la linea vacia alterna de sexo
56 // obtenemos el nombre y la lista
57 std::istringstream ss(l);
58 std::string nombre = get_hasta(ss, ':');
59 Persona* pp = susanita.get_persona(nombre);
62 pp = new Persona(nombre, sexo);
63 susanita.add_persona(pp);
66 Persona::prefs_type prefs;
69 std::string nombre = get_hasta(ss, ',');
70 Persona* ppp = susanita.get_persona(nombre);
73 ppp = new Persona(nombre, opuesto);
74 susanita.add_persona(ppp);
76 pp->prefs.push_back(ppp);
86 for (Susanita::personas_type::const_iterator ih
87 = susanita.hombres.begin();
88 ih != susanita.hombres.end(); ++ih)
91 assert(h.estado == Persona::COMPROMETIDO);
92 std::cout << h.nombre << ", " << h.pareja->nombre << "\n";
95 for (Susanita::personas_type::const_iterator im
96 = susanita.mujeres.begin();
97 im != susanita.mujeres.end(); ++im)
100 assert(m.estado == Persona::COMPROMETIDO);
101 std::cout << m.nombre << ", " << m.pareja->nombre << "\n";