Enregistrer une simulation sur deux fichiers CSV

Fermé
wella_salwa Messages postés 18 Date d'inscription lundi 31 octobre 2022 Statut Membre Dernière intervention 2 mai 2024 - Modifié le 10 mai 2023 à 14:42
mamiemando Messages postés 33113 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 mai 2024 - 16 mai 2023 à 04:55

Bonjour,

Je suis en train de simuler une topologie de  réseau NDN. Je veux obtenir le plus grand nombre possible de valeurs de simulation pour construire mon data set . Par contre, lorsque je simule pendant longtemps , le CSV risque de perdre beaucoup de valeurs 

Je veux donc diviser mes résultats sur plusieurs fichiers CSV . Comment le faire en C++

Merci


Windows / Edge 113.0.1774.35

A voir également:

1 réponse

mamiemando Messages postés 33113 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 mai 2024 7 753
16 mai 2023 à 04:55

Bonjour,

Dit comme ça c'est un peu abstrait car tu n'expliques ni ce que tu veux faire, ni comment tu vas scinder ton fichier CSV. De plus, je ne pense pas que ça ait un réel intérêt. Il existe de nombreux moyen de saucissonner un gros fichier CSV a posteriori (par exemple sous Linux en combinant head et tail).

Mais bon si on tente de répondre malgré toutes ces incertitudes à ta question, tu pourrais dire que tous les N points, tu commences à logger tes résultats dans un nouveau fichier de log. Pour cela, il suffisait de compter combien de points ont été sauvé (disons n), et dès que n % N == 0, alors tu sais que tu dois fermer le fichier précédent et en ouvrir un nouveau.

Voici un exemple jouet (qui génère 10 fichiers nommés out0.csv ... out9.csv en découpant 10000 valeurs par batches de 1000) :

#include <fstream>
#include <iostream>
#include <sstream>

int main() {
    std::ofstream ofs;
    for (unsigned i = 0; i < 10000; i++) {
        if (i % 1000 == 0) {
           if (ofs) {
               // Close the previous output file, if any
               ofs.close();
           }
           // Open the new output file
           std::ostringstream oss;
           oss << "out" << int(i / 1000) << ".csv";
           std::cout << oss.str() << std::endl;
           ofs = std::ofstream(oss.str());
        }
        // Save some data in the file
        ofs << i << '\t' << i * 10 << std::endl;
    }
    if (ofs) {
        // Close the previous output file, if any
        ofs.close();
    }
}

Bonne chance

0