[C con Clase] Leer CSV
David fire
ddfire en gmail.com
Lun Feb 2 02:31:32 CET 2009
deberias tener en cuenta algun caracter de escape
por que en un campo de texto podrias tener ;
tenes que tener " como inicio de texto que no lo tenes que parcear " como
final de texto y por ejemplo /" para poder poner " en el medio del texto.
busca alguna biblioteca debe haber.
David
El 1 de febrero de 2009 19:38, Andres Chamorro
<andres.chamorro.r en gmail.com>escribió:
>
>
> El 1 de febrero de 2009 14:27, Rubén <parraymartinez en terra.es> escribió:
>
>> El dom, 01-02-2009 a las 11:46 -0500, Steven Davidson escribió:
>> > Hola Rubén,
>> >
>> > Rubén wrote:
>> > > Buenas a todos;
>> > >
>> > > Estoy intentando leer de un archivo csv separado por ;
>> > >
>> > > La cosa está en que al utilizar getline me coge toda la fila, pero lo
>> > > que busco es leer la celda, sólo hasta el ;
>> > >
>> > > ¿Sabéis como podría conseguir esto?
>> > >
>> >
>> > Podrías usar 'getline()', pero indicar el carácter separador ';'. Esto
>> es,
>> >
>> > ifstream ifs( "datos.csv" );
>> > char szCelda[256]="";
>> >
>> > ifs.getline( szCelda, ';' );
>> >
>> > Por defecto, el carácter separador es '\n', pero 'getline()' permite
>> > indicar otro.
>> >
>> >
>> > Espero que esto te sirva.
>> >
>> > Steven
>> >
>> >
>> > _______________________________________________
>> > Lista de correo Cconclase Cconclase en listas.conclase.net
>> >
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>> Hola Steven;
>>
>> No se que estoy haciendo mal, pero no me lo reconoce. Compila
>> correctamente pero este es el resultado:
>>
>>
>> char nombre [50];
>> ifstream pru ("prueba.csv");
>> pru.getline (nombre, ';');
>> cout<<nombre<<endl;
>>
>> //
>> ruben en gaya:~/Escritorio/prueba$ ./main
>> PRUEBA1;PRUEBA2;
>> ruben en gaya:~/Escritorio/prueba$
>>
>>
>> ==================================================================
>>
>
> Yo tube que aser algop paresido y pero ocupe fgetc. La funcion lo que hace
> es que lee las filas de cierta columna y las suma. col_pot es la columna que
> se va a leer, num_colum es el numero de columnas y filename es la ruta del
> archivo .csv
>
> Espero que te sirva de algo!!:-D
>
>
> int suma_potencia(int num_colum, int col_pot, char *filename){
> int i = 0, k = 0, carac = 0, fin_linea = 0, puntoycomas = 0, guardar =
> 0, suma = 0, pala[10000], punt_com_buf = 0;
> char caracter, palabra[9000][10];
> char* colum_pot_tot = new char[1000000];
>
> for(int j = 0; j < 9000; j++){
> for(int r = 0; r < 10; r++) palabra[j][r] = '\0';
> }
>
> FILE *archivo;
> archivo = fopen(filename, "r");
> while(!feof(archivo)){
> caracter = fgetc(archivo);
> if(caracter == ';'){
> puntoycomas++;
> punt_com_buf++;
> if((puntoycomas > (num_colum - 1))&&(punt_com_buf ==
> (col_pot - 1))){
> i++;
> guardar = 1;
> }
> }
> if(punt_com_buf != (col_pot - 1)) guardar = 0;
> if(punt_com_buf == (num_colum - 1)) punt_com_buf = 0;
> if(guardar == 1) { colum_pot_tot[k] = caracter; k++; }
> if (feof(archivo)) break;
> }
> fclose(archivo);
>
> //cout<<colum_pot_tot<<endl;
> for(int i = 0; i <= strlen(colum_pot_tot); i++){
> if(colum_pot_tot[i] == ';') {fin_linea++; carac = 0;}
> else { palabra[fin_linea][carac] = colum_pot_tot[i]; carac++;}
> }
>
> delete colum_pot_tot;
> //for(int i = 0; i <= fin_linea; i++) cout<<palabra[i]<<endl;
>
> for(int i = 0; i <= fin_linea; i++){ pala[i] = atoi(palabra[i]);
> }//cout<<pala[i]<<endl;}
>
> for(int i = 0; i <= fin_linea; i++) suma = pala[i] + suma;
>
> return suma;
> }
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
--
(\__/)
(='.'=)This is Bunny. Copy and paste bunny into your
(")_(")signature to help him gain world domination.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090201/b3196d0a/attachment.html>
Más información sobre la lista de distribución Cconclase