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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Buscar una palabra dentro de un string
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Buscar una palabra dentro de un string  (Leído 16,937 veces)
kur79

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Buscar una palabra dentro de un string
« 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:
 
Código:
 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?


En línea

fary


Conectado Conectado

Mensajes: 1.082



Ver Perfil WWW
Re: Buscar una palabra dentro de un string
« Respuesta #1 en: 4 Noviembre 2014, 21:26 pm »

Detectando una palabra entre espacios sería así:

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int BuscarPalabra(char * Cadena, char * Palabra);
  5. // Si encuenta palabra retorna 1 la función
  6.  
  7. int main()
  8. {
  9.    printf ("%i\n",BuscarPalabra("Holamundo  mundo ","mundo"));
  10.    return 0;
  11. }
  12.  
  13. int BuscarPalabra(char * Cadena, char * Palabra)
  14. {
  15.    int len = strlen(Palabra);
  16.  
  17.    while (*Cadena != '\0')
  18.    {
  19.        //printf("%s\n",Cadena);
  20.  
  21.        if (strstr(Cadena,Palabra))
  22.        {
  23.            if (*(Cadena-1) == ' ' && *(Cadena+len+1) == ' ')
  24.            {
  25.                return 1;
  26.            }
  27.        }
  28.  
  29.        Cadena++;
  30.    }
  31.  
  32.    return 0;
  33. }

Pero tendrás que agregar que la busque acabando la palabra en puntos, comas, etc.


En línea

Un byte a la izquierda.
Zoso

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Buscar una palabra dentro de un string
« Respuesta #2 en: 18 Febrero 2019, 09:22 am »

Quizas este código te sea de mayor ayuda. Tuve ciertos problemas con el código anterior.

Código
  1. bool searchWord(char *cadena,  char *word)
  2. {
  3.    int length = strlen(word);
  4.    bool result = true;
  5.    for(int i=0;i<strlen(cadena);i++){
  6.        if (strstr(cadena,word)){
  7.            if (*(cadena+i-1) == ' ' && *(cadena+i+length) == ' ' ){
  8.                for(int j=0; j<length; j++){
  9.                   result = *(cadena+i+j) == *(word+j) ? true & result : false & result;
  10.                   return result;
  11.                }
  12.  
  13.            }
  14.      }
  15.    }
  16.  
  17.    return false;
  18. }
En línea

Loretz

Desconectado Desconectado

Mensajes: 117


Ver Perfil
Re: Buscar una palabra dentro de un string
« Respuesta #3 en: 18 Febrero 2019, 19:48 pm »

Usando regex:

Código:
#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++;
    }

}
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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