Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Problema al copiar una linea de un vector

Estas en el tema de Problema al copiar una linea de un vector en el foro de C/C++ en Foros del Web. Hola gente, tengo un problema al copiar una linea de un vector a un archivo de texto, el programa copia bien las lineas que tiene ...
  #1 (permalink)  
Antiguo 01/05/2014, 16:06
 
Fecha de Ingreso: marzo-2014
Ubicación: Buenos Aires
Mensajes: 59
Antigüedad: 10 años, 9 meses
Puntos: 0
Problema al copiar una linea de un vector

Hola gente, tengo un problema al copiar una linea de un vector a un archivo de texto, el programa copia bien las lineas que tiene "hola" en el vector al txt, pero al terminar me salta un error y se cierra solo el programa D:
Código C++:
Ver original
  1. #include <iostream>
  2. #include <vector>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. vector<string> CopiaDatos(ifstream& arch){
  8.     vector<string> copia;
  9.     string linea;
  10.     getline(arch,linea);
  11.     while(!arch.eof()){
  12.         copia.push_back(linea);
  13.         getline(arch,linea);
  14.     }
  15.  
  16.     return copia;
  17. }
  18.  
  19.  
  20. //esta es la funcion que busca "hola" y copia al txt.
  21. void BuscoLinea(ofstream& v1, const vector<string>& p1){
  22.     int i = 0;
  23.     int pos = p1[i].find("hola");
  24.     while(i < p1.size()){
  25.         if(pos != -1){
  26.             v1 << p1[i] << endl;
  27.         }
  28.         i++;
  29.         pos = p1[i].find("hola");
  30.     }
  31. }
  32.  
  33.  
  34. int main(){
  35.     vector<string> GuardaDatos;
  36.     ofstream salida("prueba.txt"),busqueda("busqueda.txt");
  37.     salida << "hola, como estas?" << endl;
  38.     salida << "como, tdoas" << endl;
  39.     salida << "estas,asdsa?" << endl;
  40.     salida << "hello,gssddfdfs" << endl;
  41.     salida << "hola dfsdf" << endl;
  42.     salida << "hola sdfsd " << endl;
  43.     salida << "hola sdfsdf" << endl;
  44.  
  45.     salida.close();
  46.  
  47.     ifstream entrada("prueba.txt");
  48.     GuardaDatos = CopiaDatos(entrada);
  49.  
  50.     for(int i = 0; i<GuardaDatos.size(); i++){
  51.         cout << GuardaDatos[i] << endl;
  52.     }
  53.    
  54. // hasta aca anda todo bien pero despues copia las lineas y se cierra dando un error
  55.     BuscoLinea(busqueda,GuardaDatos);
  56.  
  57.     entrada.close();
  58.     busqueda.close();
  59.  
  60.     return 0;
  61. }
  #2 (permalink)  
Antiguo 01/05/2014, 16:21
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Problema al copiar una linea de un vector

hola urban94.
bueno yo no programamo mucho en c pero la funcion donde realizas la busqueda.
va asi:
Código C++:
Ver original
  1. //esta es la funcion que busca "hola" y copia al txt.
  2.     void BuscoLinea(ofstream& v1, const vector<string>& p1){
  3.         int i = 0;
  4.         int pos = p1[i].find("hola");
  5.         while(i < p1.size()){
  6.             if(pos != -1){
  7.                 v1 << p1[i] << endl;
  8.             }
  9.             i++;
  10.             //pos = p1[i].find("hola");
  11.         }
  12.     }

solo quitando esta linea:
//pos = p1[i].find("hola");
el programa ya corre normalmente.
buenoe spero haberte ayudado saludos drewermerc.
  #3 (permalink)  
Antiguo 01/05/2014, 16:36
 
Fecha de Ingreso: marzo-2014
Ubicación: Buenos Aires
Mensajes: 59
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Problema al copiar una linea de un vector

Claro, hay funciona bien pero yo lo que quiero es que las lineas que tienen "hola" las copie
  #4 (permalink)  
Antiguo 01/05/2014, 17:35
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Problema al copiar una linea de un vector

hola urban94.
buen esntonces tu codigo debe quedar asi. espero que si sea lo que andas buscando.
te cambie el for por el while por que en lo pensonal si se saber el valor inicial y el final y aparte incrementa algo me acomodo mas usando for.

Código C++:
Ver original
  1. void BuscoLinea(ofstream& v1, const vector<string>& p1){
  2.         int i = 0;
  3.         int  pos ;
  4.         char m[100];
  5.         cout << pos<< endl;
  6.  
  7.             for(i = 0; i < p1.size(); i++){
  8.                 pos= p1[i].find("ho");
  9.                 if(pos == 0){
  10.                     v1 << p1[i] << endl;
  11.                 }
  12.                  
  13.                 //pos = p1[i].find("hola");
  14.             }
  15.    
  16.    
  17.     }
  #5 (permalink)  
Antiguo 01/05/2014, 18:47
 
Fecha de Ingreso: marzo-2014
Ubicación: Buenos Aires
Mensajes: 59
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Problema al copiar una linea de un vector

muchas gracias, realmente me ayudaste cambie el while por el for y anda de maravillas
  #6 (permalink)  
Antiguo 01/05/2014, 18:52
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Problema al copiar una linea de un vector

de nada un gusto poderte ayudar.

Etiquetas: funcion, int, programa, string, txt, vector
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:40.