Visual C++ .NET - APERTURA DE VARIOS FICHEROS SIMULTÁNEAMENTE

 
Vista:

APERTURA DE VARIOS FICHEROS SIMULTÁNEAMENTE

Publicado por enyel (1 intervención) el 06/09/2007 00:25:00
¡Buenas a tod@s!

Tengo un problemilla con un programa que estoy realizando para una simulacion de enrutamientos. El programa consiste en un grafo con varios nodos, cada uno de ellos comienza detectando sus nodos vecinos y almacena la información ( destino, siguiente salto ) en un contenedor de tipo "map". He intentado con un iterador y con un bucle "for" sacar los datos del contenedor a un fichero de datos externo pero cada vez que me saca los datos de un nodo machaca los del nodo anterior. He probado varias opciones pero con el mismo resultado. ¿ Podría abrir varios ficheros externos uno para la información de cada nodo? o ¿ Podría almacenar de alguna forma todos los datos en un único fichero externo sin que se machacaran los datos del nodo anterior?

No sé si me he explicado muy bien..

De todas formas, muchísmas gracias de antemano.

Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Problema con la escritura de datos en un fichero externo

Publicado por Alejandro (265 intervenciones) el 01/02/2024 21:30:07
Hola Enyel.

Entiendo tu situación. Para evitar que los datos de un nodo machaquen los del nodo anterior al escribir en un fichero externo, podrías abrir y cerrar el fichero para cada nodo. Aquí te dejo un ejemplo de cómo podrías hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <fstream>
#include <map>
 
int main() {
    // Tu código para obtener el mapa con la información de nodos
 
    // Supongamos que tu mapa se llama 'informacionNodos'
    std::map<int, std::pair<int, int>> informacionNodos; // Cambia el tipo según tu estructura
 
    // Iterar sobre los nodos
    for (const auto& nodo : informacionNodos) {
        // Crear un nombre de archivo único para cada nodo (puedes ajustar esto según tus necesidades)
        std::string nombreArchivo = "nodo_" + std::to_string(nodo.first) + ".txt";
 
        // Abrir el archivo en modo de escritura (se crea uno nuevo o se sobrescribe si ya existe)
        std::ofstream archivo(nombreArchivo);
 
        // Verificar si se abrió correctamente
        if (archivo.is_open()) {
            // Escribir la información del nodo en el archivo
            archivo << "Destino: " << nodo.second.first << "\n";
            archivo << "Siguiente salto: " << nodo.second.second << "\n";
 
            // Cerrar el archivo
            archivo.close();
        } else {
            // Manejar el caso en el que no se pueda abrir el archivo
            std::cerr << "Error al abrir el archivo para el nodo " << nodo.first << "\n";
        }
    }
 
    return 0;
}

Con esto, cada nodo tendrá su propio archivo, y la información no se sobrescribirá entre nodos.

Espero que esto te ayude. ¡Buena suerte con tu proyecto!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar