<br><br><div class="gmail_quote">El 1 de febrero de 2009 14:27, Rubén <span dir="ltr"><<a href="mailto:parraymartinez@terra.es">parraymartinez@terra.es</a>></span> escribió:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
El dom, 01-02-2009 a las 11:46 -0500, Steven Davidson escribió:<br>
<div><div></div><div class="Wj3C7c">> Hola Rubén,<br>
><br>
> Rubén wrote:<br>
> > Buenas a todos;<br>
> ><br>
> > Estoy intentando leer de un archivo csv separado por ;<br>
> ><br>
> > La cosa está en que al utilizar getline me coge toda la fila, pero lo<br>
> > que busco es leer la celda, sólo hasta el ;<br>
> ><br>
> > ¿Sabéis como podría conseguir esto?<br>
> ><br>
><br>
> Podrías usar 'getline()', pero indicar el carácter separador ';'. Esto es,<br>
><br>
> ifstream ifs( "datos.csv" );<br>
> char szCelda[256]="";<br>
><br>
> ifs.getline( szCelda, ';' );<br>
><br>
> Por defecto, el carácter separador es '\n', pero 'getline()' permite<br>
> indicar otro.<br>
><br>
><br>
> Espero que esto te sirva.<br>
><br>
> Steven<br>
><br>
><br>
> _______________________________________________<br>
> Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
> <a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
> Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
<br>
</div></div>Hola Steven;<br>
<br>
No se que estoy haciendo mal, pero no me lo reconoce. Compila<br>
correctamente pero este es el resultado:<br>
<br>
<br>
char nombre [50];<br>
ifstream pru ("prueba.csv");<br>
pru.getline (nombre, ';');<br>
cout<<nombre<<endl;<br>
<br>
//<br>
ruben@gaya:~/Escritorio/prueba$ ./main<br>
PRUEBA1;PRUEBA2;<br>
ruben@gaya:~/Escritorio/prueba$<br>
<div><div></div><div><br>
<br>
==================================================================</div></div></blockquote><div><br>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<br>
<br>Espero que te sirva de algo!!:-D<br><br><br>int suma_potencia(int num_colum, int col_pot, char *filename){<br>    int i = 0, k = 0, carac = 0, fin_linea = 0, puntoycomas = 0, guardar = 0, suma = 0, pala[10000], punt_com_buf = 0;<br>
    char caracter, palabra[9000][10];<br>    char* colum_pot_tot = new char[1000000];<br>    <br>    for(int j = 0; j < 9000; j++){<br>            for(int r = 0; r < 10; r++) palabra[j][r] = '\0';<br>            }<br>
    <br>    FILE *archivo;<br>    archivo = fopen(filename, "r");<br>    while(!feof(archivo)){<br>          caracter = fgetc(archivo);<br>          if(caracter == ';'){<br>                      puntoycomas++;<br>
                      punt_com_buf++;<br>                      if((puntoycomas > (num_colum - 1))&&(punt_com_buf == (col_pot - 1))){<br>                                      i++;<br>                                      guardar = 1;<br>
                                      }<br>                      }<br>          if(punt_com_buf != (col_pot - 1)) guardar = 0;<br>          if(punt_com_buf == (num_colum - 1)) punt_com_buf = 0;<br>          if(guardar == 1) { colum_pot_tot[k] = caracter; k++; }<br>
          if (feof(archivo)) break;<br>      }   <br>    fclose(archivo);<br>    <br>    //cout<<colum_pot_tot<<endl;<br>    for(int i = 0; i <= strlen(colum_pot_tot); i++){<br>            if(colum_pot_tot[i] == ';') {fin_linea++; carac = 0;}<br>
            else { palabra[fin_linea][carac] = colum_pot_tot[i]; carac++;}<br>            }<br>            <br>    delete colum_pot_tot;<br>    //for(int i = 0; i <= fin_linea; i++) cout<<palabra[i]<<endl;<br>
    <br>    for(int i = 0; i <= fin_linea; i++){ pala[i] = atoi(palabra[i]); }//cout<<pala[i]<<endl;}<br>    <br>    for(int i = 0; i <= fin_linea; i++) suma = pala[i] + suma;<br>    <br>    return suma;<br>
} <br></div></div><br>