Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: M1L0666 en 25 Agosto 2011, 08:01 am



Título: Funcion FindString .
Publicado por: M1L0666 en 25 Agosto 2011, 08:01 am
Con esta funcion podremos buscar una palabra en un archivo de texto,espero y le
sea de utilidad a alguien.

Código
  1. #include <windows.h>
  2. #include <iostream>
  3. #include <fstream>
  4. using namespace std;
  5. int Text(char *palabra,char color){
  6. switch(color){case 'V':
  7. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
  8. FOREGROUND_GREEN);cout<<palabra<<endl; break;
  9. case 'R':SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
  10. FOREGROUND_RED);cout<<palabra<<endl;break;
  11. default: cout<<"El valor ingresado no es valido"<<endl;}}
  12. //##################FindString#########################
  13. int FindString(char *archivo,char *palabra){
  14. char dat[1000];
  15. ifstream arch; arch.open(archivo);if(!arch){
  16. cout<<"ERROR AL ABRIR EL ARCHIVO"<<endl;}
  17. else{while(!arch.eof()&&arch.getline(dat,1000)){
  18. if(strstr(dat,palabra)==NULL){Text(dat,'R');
  19. }else{Text(dat,'V');}}}}
  20. int main(){
  21. FindString("c:\\archivo.cpp","long");
  22. cin.get();
  23. return 0;
  24. }
  25.  
La o las lineas donde se encuentre la palabra que buscan estaran marcadas con
color verde, y el resto con color rojo,culquier duda me avisan, saludos.


Título: Re: Funcion FindString .
Publicado por: Riki_89D en 31 Agosto 2011, 00:41 am
jaj Felicidades,esta bastante bien la verdad ^^ yo hice algo parecido,esra mas sencillo pero hacia lo mismo,peor no te coloreaba nada xD solo te la sacava por pantalla xD,gracias :)


Título: Re: Funcion FindString .
Publicado por: M1L0666 en 31 Agosto 2011, 01:46 am
jaj Felicidades,esta bastante bien la verdad ^^ yo hice algo parecido,esra mas sencillo pero hacia lo mismo,peor no te coloreaba nada xD solo te la sacava por pantalla xD,gracias :)
Gracias saludos.


Título: Re: Funcion FindString .
Publicado por: LearningSpanishProgrammer en 1 Septiembre 2011, 05:44 am
Su codigo no es muy bueno. No usar las funciones de la lenguagem C++.

Uno ejemplo:

Código:
std::ifstream file(archivo);
if (!file)
  return -1;

std::string line;
while (std::getline(file, line))
{
   size_t idx = line.find(palabra);
   if (idx != std::string::npos)
   {
      std::cout << "Encontrado" << std::endl;
   }
}

y si la línea tiene más de un millar de caracteres? Tu solución no es generíca suficiente

Pero buena surte, lo camino es asi