Dev - C++ - C++ Leer archivos .csv

 
Vista:
sin imagen de perfil

C++ Leer archivos .csv

Publicado por david (8 intervenciones) el 17/11/2022 04:30:07
Buenas noches compañeros

Necesito leer unos datos que estan dentro de un archivo excel, para luego compararlos y borrarlos, pero no encuentro la manera, ya intente hacerlo con la función, pero no me da, alguno me podria ayudar?

esto es lo que llevo:


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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <iostream>
#include <string.h>
#include <fstream>
#include <sstream>
#define nombre_archivo "Libros.csv"
using namespace std;
struct Libros
{
	string isbn;
	string Nombre;
	string precio_compra;
	string precio_venta;
	string cantidad;
};
 
	void abrir (Libros llenar)
	{
 
		fstream abrir;
		abrir.open("data.csv",ios::app);
		abrir<<llenar.isbn<<";"<<llenar.Nombre<<";"<<llenar.precio_compra<<";"<<llenar.precio_venta<<";"<<llenar.cantidad<<endl;
	}
 
	void Leer (Libros leer)
	{
		ifstream data;
		string linea;
		char delimitador = ',';
		getline (data,linea);
		while (getline (data,linea))
		{
			stringstream stream(linea);
			getline (stream,leer.isbn,delimitador);
			getline (stream,leer.Nombre,delimitador);
			getline (stream,leer.precio_compra,delimitador);
			getline (stream,leer.precio_venta,delimitador);
			getline (stream,leer.cantidad,delimitador);
 
			data.open("data.csv",ios::in);
			cout<< "------------------------"<<endl;
			cout<< "ISBN: "<< leer.isbn<<endl;
			cout<< "Precio de compra: "<<leer.precio_compra<<endl;
			cout<< "Precio venta: "<<leer.precio_venta<<endl;
			cout<< "Cantidad: "<<leer.cantidad<<endl;
 
		}
 
 
	}
 
int main ()
 
{
	int opc;
 
 
	cout<<"Bienvenido a la biblioteca, elija que transaccion desea emplear :"<<endl;
	cout<<"1. Registar un libro en el catalogo "<<endl;
	cout<<"2. Eliminar un libro del catalogo "<<endl;
	cout<<"3. Buscar un libro por titulo "<<endl;
	cout<<"4. Buscar un libro por el ISBN"<<endl;
	cout<<"5. Abastecer ejemplares de un libro"<<endl;
	cout<<"6. Vender ejemplares de un libro"<<endl;
	cout<<"7. Calcular la cantidad de trasacciones de abastecimiento de un libro en particular"<<endl;
	cout<<"8. Buscar el libro mas costoso"<<endl;
	cout<<"9. Buscar el libro menos costoso"<<endl;
	cout<<"10. Buscar el libro mas vendido"<<endl;
	cin>>opc;
	system ("Cls");
	fstream Libro;
	Libros llenar;
	Libros leer;
	switch (opc)
{
			// Se puede regitrar un nuevo libro
		case 1:
 
 
		cout<<"Para registrar un nuevo libro en el catalogo tiene que ser con el siguiente orden : "<<endl;
		cout<<"ISBN"<<endl;
		cin>>llenar.isbn;
		cout<<"Nombre"<<endl;
		cin>>llenar.Nombre;
		cout<<"Precio de Compra"<<endl;
		cin>>llenar.precio_compra;
		cout<<"Precio de Venta"<<endl;
		cin>>llenar.precio_venta;
		cout<<"Cantidad"<<endl;
		cin>>llenar.cantidad;
 
		abrir (llenar);
 
		break;
 
		case 2:
		 Leer (leer);
		 break;
 
 
 
 
}
}
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
sin imagen de perfil
Val: 1
Ha aumentado su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

C++ Leer archivos .csv

Publicado por antonio (85 intervenciones) el 17/11/2022 15:46:28
Hola buenas no he mirado tu codigo he cogido como ejemplo otro de internet, https://parzibyte.me/blog/2021/04/16/leer-csv-cpp/. También decirte que para que lo lea correctamente la primera fila ha de ser el nombre de la columna te adjunto un fichero para que lo veas con 7 columnas pero si necesitas mas seria crear mas getlines:

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
    https://parzibyte.me/blog
*/
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
#define NOMBRE_ARCHIVO "Libros.csv"
using namespace std;
 
int main()
{
    ifstream archivo(NOMBRE_ARCHIVO);
    string linea;
    char delimitador = ';';
    // Leemos la primer línea para descartarla, pues es el encabezado
    getline(archivo, linea);
    // Leemos todas las líneas
    int pos=0;
    string personas [10][7];
    while (getline(archivo, linea))
    {
 
        stringstream stream(linea); // Convertir la cadena a un stream
        string id, Nombre, Apellidos, Edad, DNI, F_Nacimiento, Sexo;
        // Extraer todos los valores de esa fila
        getline(stream, id, delimitador);
        getline(stream, Nombre, delimitador);
        getline(stream, Apellidos, delimitador);
        getline(stream, Edad, delimitador);
        getline(stream, DNI, delimitador);
        getline(stream, F_Nacimiento, delimitador);
        getline(stream, Sexo, delimitador);
        //Guardamos informacion en un array
        personas[pos][0]= id;
        personas[pos][1]=Nombre;
        personas[pos][2]=Apellidos;
        personas[pos][3]=Edad;
        personas[pos][4]=DNI;
        personas[pos][5]=F_Nacimiento;
        personas[pos][6]=Sexo;
           // Imprimir
        cout << "==================" << endl;
        cout << "Id: " << id << endl;
        cout << "Nombre: " << Nombre << endl;
        cout << "Apellidos: " << Apellidos << endl;
        cout << "Edad: " << Edad << endl;
        cout << "DNI: " << DNI << endl;
        cout << "F_Nacimiento: " << F_Nacimiento << endl;
        cout << "Sexo: " << Sexo << endl;
        pos++;
    }
 
    archivo.close();
    //Todo es string pero quieres comparar para int comparas las posiciones de array
    //Para comparar el array ejemplo de comparar edades para ver la mayor
 
    int compedad=0;
 
    for(int i=0;i<2;i++){
        for(int j=0;j<6;j++){
            if(j==3){
                if(compedad<stoi(personas[i][3])) compedad=stoi(personas[i][3]);
            }
 
        }
    }
    cout<<"La mayor edad es: "<<compedad;
}
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
sin imagen de perfil

C++ Leer archivos .csv

Publicado por david (8 intervenciones) el 17/11/2022 23:45:27
Buenas

Incluso ejecutando tu codigo, no me lee los archivos, necesito que se impriman en patalla para luego borrarlos, tiene alguna idea de como?
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
sin imagen de perfil
Val: 1
Ha aumentado su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

C++ Leer archivos .csv

Publicado por antonio (85 intervenciones) el 18/11/2022 12:01:22
Hola buenas yo lo estoy probando ahora, ¿tienes el archivo en la misma carpeta? ¿esta correcto el nombre? ¿la primera fila del archivo es los nombres de las columnas? ¿Cuántas columnas quieres leer segun el numero ese es el numero de getlines que debes usar?

Captura

Captura2

Si no te queda claro mándame un mensaje
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