Título: Buscar una palabra dentro de un string
Publicado por: kur79 en 4 Noviembre 2014, 18:53 pm
Buenas pues eso, tengo una cadena y un string y estoy buscando una funcion/forma de poder saber si dicho string está incluido. Me explico en practicas anteriores utilizaba: if (strstr(titulo2.c_str(), titulo.c_str())) Pero esa funcion tiene el problema de que si el string no es una palabra unica, sino que es parte de una tambien la cuenta y muestra. Saben de alguna funcion de c++ con la que poder cumplir esta nueva condicion?
Título: Re: Buscar una palabra dentro de un string
Publicado por: fary en 4 Noviembre 2014, 21:26 pm
Detectando una palabra entre espacios sería así: #include <stdio.h> #include <string.h> int BuscarPalabra(char * Cadena, char * Palabra); // Si encuenta palabra retorna 1 la función int main() { printf ("%i\n",BuscarPalabra ("Holamundo mundo ","mundo")); return 0; } int BuscarPalabra(char * Cadena, char * Palabra) { while (*Cadena != '\0') { //printf("%s\n",Cadena); { if (*(Cadena-1) == ' ' && *(Cadena+len+1) == ' ') { return 1; } } Cadena++; } return 0; }
Pero tendrás que agregar que la busque acabando la palabra en puntos, comas, etc.
Título: Re: Buscar una palabra dentro de un string
Publicado por: Zoso en 18 Febrero 2019, 09:22 am
Quizas este código te sea de mayor ayuda. Tuve ciertos problemas con el código anterior. bool searchWord(char *cadena, char *word) { int length = strlen(word); bool result = true; for(int i=0;i<strlen(cadena);i++){ if (strstr(cadena,word)){ if (*(cadena+i-1) == ' ' && *(cadena+i+length) == ' ' ){ for(int j=0; j<length; j++){ result = *(cadena+i+j) == *(word+j) ? true & result : false & result; return result; } } } } return false; }
Título: Re: Buscar una palabra dentro de un string
Publicado por: Loretz en 18 Febrero 2019, 19:48 pm
Usando regex: #include <iostream> #include <string> #include <regex>
int main() { std::string frase{ "Galapagar, pasar y no parar; y de parar, pagar, pagar y callar." };
std::regex buscar("\\bpagar\\b");
std::sregex_iterator ppio(frase.begin(), frase.end(), buscar); std::sregex_iterator fin = std::sregex_iterator();
std::cout << "Encontrada(s): " << std::distance(ppio, fin) << " palabra(s) completa(s):\n";
while (ppio != fin) { std::smatch match = *ppio; std::cout << match.str() << "\n"; ppio++; }
}
|