elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  buscar y extraer un valor en un fichero en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: buscar y extraer un valor en un fichero en C++  (Leído 20,766 veces)
huskerone

Desconectado Desconectado

Mensajes: 4


Ver Perfil
buscar y extraer un valor en un fichero en C++
« en: 31 Agosto 2011, 00:05 am »

buenas a todos , digamos que tengo un archivo asi :

NOMBRE
Rolando
PESO
52
ALTURA
1.56

O  este otro caso

NOMBRE Rolando PESO 52 ALTURA 1.56

como me posiciono en por ejemplo PESO y saco el valor 52 para hacer operaciones con ese valor?

se como abrir y cerrar ficheros y como escribir estos datos en el, pero no se como buscar una palabra determinada y leer el valor que sige ya sea si este esta en la misma linea o en la de abajo como en este caso,


En línea

Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: buscar y extraer un valor en un fichero en C++
« Respuesta #1 en: 31 Agosto 2011, 00:18 am »

un bucle for asta que encuentre un numero?,eso aria yo en el peor de los casos....,ir comparando el caracter que recore el bucle,y cuando encuentre numero pues que lo vaya guardando en un array,y de alli realizar las operaciones,no se me ocurre otra cosa,quizas aiga alguna funcion que lo haga pero vamos ni idea :S



suerte amigo


En línea

Dark Invader

Desconectado Desconectado

Mensajes: 111


Lucha hasta el final para conseguir tu objetivo.


Ver Perfil
Re: buscar y extraer un valor en un fichero en C++
« Respuesta #2 en: 31 Agosto 2011, 13:32 pm »

Te voy a dar una pista de ccomo lo haria yo:

Primero leo la primera linea con gets,y hago un strlen(palabra),si la longitud de la cadena tiene los mismos caracteres que nombre,significa que en esa linea solo esta el nombre y haria un salto de linea para leer el nombre mas abajo,si todo esta en la misma linea,se podria usar la "debilidad" de fscanf de leer hasta un espacio,leeria hasta nombre ,un espacio,y luego leeria la siguiente cadena...Esto es una idea aproximada,necesitaras usar fseek para moverte por el archivo para hacer lo que te dije...

Otra manera mas larga,seria ir caracter por caracter,si el primer caracter coincido meto una condicion de que si el siguiente tambien coincide que siga en el bucle,cada caracter estará metido en una cadena,y luego comprobaria la cadena,es decir:

Nombre:

Si caracter leido igual a n,seguimos,sino se sale del bucle,si caracter leido igual a o seguimos dentro...


Hay otra,pero es con punteros,y no se si los has dado  :silbar:

Un saludo
En línea

Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: buscar y extraer un valor en un fichero en C++
« Respuesta #3 en: 31 Agosto 2011, 14:50 pm »

La forma de Dark Invader me parece bastante buena :),la de recorrer caracter x caracter (que es la que use yo) no es tan "professional",pero vamos el objetivo es ese mismo.



suerte
En línea

El_Java

Desconectado Desconectado

Mensajes: 144



Ver Perfil WWW
Re: buscar y extraer un valor en un fichero en C++
« Respuesta #4 en: 31 Agosto 2011, 16:38 pm »

Dark Invader explica como lo harias con punteros anda, que no se me ocurre xD
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: buscar y extraer un valor en un fichero en C++
« Respuesta #5 en: 31 Agosto 2011, 18:17 pm »

¡Buenas!

Da igual que los datos esten en una linea o en varias. Lo que tienes en el fichero son pares de tipo_dato/valor, por lo tanto, lees el tipo de dato en un string, y si coincide con el que buscas lees el valor asociado. Es decir tienes que leer el par tipo_dato/valor, hasta que tipo_dato sea el que buscas...

Para leer los datos, investiga sobre las funciones de stdio.h (cstdio) o los operadores/funciones de iostream.

http://www.cplusplus.com/

¡Saludos!
« Última modificación: 31 Agosto 2011, 18:18 pm por do-while » En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Dark Invader

Desconectado Desconectado

Mensajes: 111


Lucha hasta el final para conseguir tu objetivo.


Ver Perfil
Re: buscar y extraer un valor en un fichero en C++
« Respuesta #6 en: 31 Agosto 2011, 19:44 pm »

Dark Invader explica como lo harias con punteros anda, que no se me ocurre xD

Si tengo tiempo lo hago El_Java,(bueno ya lo he intentado y estoy teniendo problemas,por bocas  :xD ) de todas maneras las otras dos formas las he dejado,la de los punteros intentare dedicarle mas tiempo,pero creo que hable mas de la cuenta al decir que se haria con punteros,en fin...Como dicen,no hay nada imposible de hacer con C  :silbar:

Tambien podrias utilizar la siguiente funcion:

http://foro.elhacker.net/programacion_cc/funcion_findstring-t337296.0.html
« Última modificación: 31 Agosto 2011, 19:47 pm por Dark Invader » En línea

oPen syLar


Desconectado Desconectado

Mensajes: 769


The Best of You..


Ver Perfil WWW
Re: buscar y extraer un valor en un fichero en C++
« Respuesta #7 en: 31 Agosto 2011, 22:44 pm »

A ver.. Solo es para un ejemplo.? O quieres hacerlo para un software que andas desarrollando.? porque no metes todos los datos en un XML.?


Con esa estructra lo que haria yo Es.. un...

Código:
fgets(oPen, 255, channel);     //Para leer linea por linea

Y luego un...


Código:
strstr(oPen, "52")     //Busco la cadena 52


Saludos =)
En línea

Siempre habra 2 verdades, la que quieres creer y la que no aceptaras
huskerone

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: buscar y extraer un valor en un fichero en C++
« Respuesta #8 en: 1 Septiembre 2011, 03:57 am »

gracias a todos por las respuestas,

en realidad el archivo tiene esta estructura :

18.20   20.22   32.55
15.58   02.58   11.25
25.66   45.85   36.45

cada columna corresponde a un mismo tipo de dato
entonces lo que tengo que hacer es recuperar esos datos, tonces por ejemplo me piden el primer dato y yo imprimo en pantalla

registro 1  registro 2 registro 3
18.20       15.58       25.66

sin embargo no se el numero de lineas en el archivo , ya que depende de cuantas se hallan metido, intente con este codigo para contar las lineas del archivo y asi poder hacer un bucle que me imprima la palabra registro 1 registro 2 y assi, pero me cuenta las lineas en 0

int main () {
char c;
int num=0;
ifstream archivo;
is.open ("fichero.txt");
while (archivo.good())
{
c = archivo.get();
if (c=='\n')num++;
}
is.close();
}



y luego he invetigado pero no se como accedder  alos datos que ocupo, ya sea la primera columna , segunda o tercera

tengo este codigo

strcat(datoscliente.identificacion, ".dat"); //aqui abre el archivo
  ifstream archivoreporte (datoscliente.identificacion, ios::in);
 
     if(!archivoreporte){
                         cerr<<"NO SE PUDO ABRIR EL ARCHIVO"<<endl;
                         exit(1);
                         }

cout <<"   QUE DATO DESEA COMPARAR HISTORICAMENTE ?"<<endl;
     
     cout <<endl;
     cout <<"   PESO                                           (1)" <<endl;
     cout <<"   TALLA                                          (2)" <<endl;
     cout <<"   % DE GRASA                                (3)" <<endl;
     cout <<endl;
     cout <<endl;
     cout <<"   POR FAVOR , ESCOJA UNA OPCION"<<endl;
     cout <<"   ";cin>>opcion;

switch (opcion)
                 {
                    case 1:
                        for (int i=0;i<=num;i++){
                            cout<<"REG "<<i<<setw(5);
                        }

                        NO SE QUE HACER
                       
                        break;
                    case 2:
                         
                     
                        break;
                    case 3:
                       
                        break;
                    default:
                        cout <<"   EL VALOR INGRESADO NO CORRESPONDE A NINGUN MENU, POR FAVOR , TRATE DE NUEVO";
                        cout <<"   PRESIONA CUALQUIER TECLA PARA CONTINUAR\n";
                        getch();
                        system("cls");
                        reporte();
                 }//fin switch
En línea

LearningSpanishProgrammer

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: buscar y extraer un valor en un fichero en C++
« Respuesta #9 en: 1 Septiembre 2011, 05:24 am »

Si se utiliza de el C++ entonces debe utilizar de la funciones

no han sido evaluados, pero diebe ejecutar

Código:

#include <fstream>
#include <sstream>
#include <iostream>
#include <string>

...


std::ifstream file("filename");
if (!file)
  return -1;

std::string encabeziamento;
if (!std::getline(encabeziamento))
  return -1;

std::string linea;
while (file >> linea)
{
   double v1, v2, v3;
   std::istringstream parser(linea)

   parser >> v1 >> v2 >> v3
}

En línea

Estoy aprendiendo español, y tu estas aprendiendo programación
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines