J'essaie de créer des fichiers de sortie indexés par un index dynamique (d = {0, ..., NUM_DEMES-1}). Actuellement, je ne reçois que des fichiers de sortie pour la première valeur (d = 0).Noms de fichiers de sortie dynamiques (C++)
#include <sstream>
#include <string>
void Simulation::updateSimulation(double t)
{
...
ofstream abundanceStream;
ofstream abHeaderStream;
if (step == 1) {
for (int d = 0; d < NUM_DEMES; d++) {
abundanceStream.open(makeFilename("Abundances_", d).c_str(),ios::out);
abHeaderStream.open(makeFilename("Abundances_IDs_", d).c_str(),ios::out);
}
}
for (int d = 0; d < NUM_DEMES; d++) {
abundanceStream.open(makeFilename("Abundances_", d).c_str(),ios::app);
abHeaderStream.open(makeFilename("Abundances_IDs_", d).c_str(),ios::app);
}
}
string Simulation::makeFilename(const string& basename, int index)
{
ostringstream result;
result << basename << index;
return result.str();
}
Ceci crée Abundances_0 et Abundances_IDs_0 mais rien d'autre. Je peux écrire dans ces fichiers. Je peux très bien créer les autres noms de fichiers, mais les fichiers n'apparaissent pas.
Je manque probablement quelque chose de basique sur les flux, mais je n'ai pas été capable de comprendre quoi.
EDIT
Le code suivant imprime à l'écran les noms de fichiers à droite:
for (int d = 0; d < NUM_DEMES; d++) {
abundanceStream.open(makeFilename("Abundances_", d).c_str(),ios::app);
abundanceStream << "stuff\n";
cout << makeFilename("Abundances_", d).c_str() << endl;
abHeaderStream.open(makeFilename("Abundances_IDs_", d).c_str(),ios::app);
abHeaderStream << "more stuff\n";
cout << makeFilename("Abundances_IDs_", d).c_str() << endl;
}
Mais "trucs" et "plus de choses" apparaissent uniquement dans le Abundances_0 et Abundances_IDs_0.
Quelle est la valeur de result.str() pour chaque appel? et à quoi sert NUM_DEMES? –
quelle est la valeur de NUM_DEMES? –
Désolé. NUM_DEMES = 2, et d s'incrémente correctement. Result.str() vérifie aussi bien (c'est-à-dire que cout << result.str() imprime ce qu'il devrait faire et imprimer les résultats de makeFilename (...) donne aussi les bons noms de fichiers). – Sarah