es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo manejar archivos con múltiples tipos de datos en C++?

Tengo un archivo de entrada en formato txt que contiene información como esta:

4
Eric Nandos
3
15.00 45.00 36.81 64.55 50.50
51.52 36.40 25.15 35.45 24.55
41.55 44.55 36.35 55.50 40.55
Steven Abraham
2
40.45 20.35 40.46 30.35 55.50
18.25 18.00 20.00 30.00 60.65
Richard Mccullen
2
40.45 50.55 20.45 30.30 20.25
30.00 20.00 40.00 60.60 45.45
Stacey Vaughn
3
45.00 25.00 15.00 30.30 25.20
20.20 60.65 55.55 50.50 50.40
30.30 60.55 20.25 20.00 40.00

Con getline(file, string) puedo guardar estos datos en una variable de tipo string y luego imprimirlos.
El problema es que necesito almacenar los diferentes tipos de datos en diferentes variables para poder realizar ciertas operaciones con ellos (por ejemplo: necesito calcular el promedio de los valores decimales, sumar los diferentes valores enteros, almacenar algunos datos en un vector, etc.). He intentado diferentes bucles para analizar el archivo, pero siempre he obtenido un error. ¿Alguna recomendación sobre cómo separar los diferentes datos aquí para poder almacenarlos adecuadamente? Todavía soy nuevo en C++ y no tengo mucha experiencia. Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para separar los diferentes tipos de datos en el archivo de texto de entrada dado, podemos usar una combinación de bucles y declaraciones condicionales. Aquí hay una posible forma de hacerlo:

    1. Abre el archivo txt de entrada usando ifstream.
    2. Lee la primera línea del archivo como un entero (llamémoslo n).
    3. Usa un bucle for para iterar n veces, ya que sabemos que hay n registros en el archivo.
    4. Dentro del bucle for, usa getline para leer la siguiente línea del archivo.
      • Verifica si la línea contiene un nombre (es decir, si tiene cualquier caracter no numérico) iterando a través de cada caracter y usando isalpha.
        • Si es un nombre, guárdalo en una variable de tipo string.
        • Si no es un nombre, asume que es un entero y usa stoi para convertirlo en un int.
      • Usa otro getline para leer la siguiente línea, que sabemos contiene un único valor entero.
        • Almacena este valor entero en una variable int.
      • Usa otro getline para leer la siguiente línea, que sabemos contiene una serie de valores decimales separados por espacios.
        • Usa stringstream para convertir cada valor decimal de string a double y almacénalos en un vector.
    5. Repite los pasos 4 y 5 hasta que hayas leído todos los n registros.
    6. Cierra el archivo txt de entrada.

    Con este enfoque, deberías poder separar los diferentes tipos de datos en el archivo txt de entrada y almacenarlos en variables separadas para su posterior manipulación.

Comments are closed.