Funcion FindString .

Iniciado por M1L0666, 25 Agosto 2011, 08:01 AM

0 Miembros y 1 Visitante están viendo este tema.

M1L0666

Con esta funcion podremos buscar una palabra en un archivo de texto,espero y le
sea de utilidad a alguien.

Código (cpp) [Seleccionar]

#include <windows.h>
#include <iostream>
#include <fstream>
using namespace std;
int Text(char *palabra,char color){
switch(color){case 'V':
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_GREEN);cout<<palabra<<endl; break;
case 'R':SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_RED);cout<<palabra<<endl;break;
default: cout<<"El valor ingresado no es valido"<<endl;}}
//##################FindString#########################
int FindString(char *archivo,char *palabra){
char dat[1000];
ifstream arch; arch.open(archivo);if(!arch){
cout<<"ERROR AL ABRIR EL ARCHIVO"<<endl;}
else{while(!arch.eof()&&arch.getline(dat,1000)){
if(strstr(dat,palabra)==NULL){Text(dat,'R');
}else{Text(dat,'V');}}}}
int main(){
FindString("c:\\archivo.cpp","long");
cin.get();
return 0;
}

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.





Mas vale un minuto de tonto, que una vida de pendejo.

Riki_89D

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 :)

M1L0666

Cita de: 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 :)
Gracias saludos.





Mas vale un minuto de tonto, que una vida de pendejo.

LearningSpanishProgrammer

#3
Su codigo no es muy bueno. No usar las funciones de la lenguagem C++.

Uno ejemplo:


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
Estoy aprendiendo español, y tu estas aprendiendo programación