Necesito escribir en un grupo de archivos simultáneamente, así que decidí usar map <string, ofstream>
.Manejo del mapa de archivos en C++
map<string, ofstream> MyFileMap;
Tomo una vector<string> FileInd
, que consta de, por ejemplo "a" "b" "c"
, y tratar de abrir los archivos con:
for (vector<string>::iterator it = FileInd.begin(); iter != FileInd.end(); ++it){
...
MyFileMap[*it].open("/myhomefolder/"+(*it)+".");
}
consigo el error
request for member 'open' in ..... , which is of non-class type 'std::ofstream*'
He tratado de cambiar a
map<string, ofstream*> MyFileMap;
Pero tampoco funcionó.
¿Alguien podría ayudar?
Gracias.
Aclaración:
He intentado tanto
map<string, ofstream> MyFileMap;
map<string, ofstream*> MyFileMap;
tanto con
.open
->open
ninguna de las 4 variantes funciona.
Solution (se sugiere en el código de Rob abajo):
Básicamente, se me olvidó "nuevas", las siguientes obras para mí:
map<string, ofstream*> MyFileMap;
MyFileMap[*it] = new ofstream("/myhomefolder/"+(*it)+".");
Quiere '-> open' , no '.open'. El operador '[]' en un vector devuelve algo que actúa como un puntero, no como una referencia. –
@DavidSchwartz No de acuerdo con http://www.cplusplus.com/reference/stl/map/operator%5B%5D/ – Borealid
Lo siento, quise decir en un 'mapa', no en un' vector'. –