C++, fonction de recherche dans un string

Fermé
- - 16 mars 2008 à 17:40
mamiemando Messages postés 33108 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 mai 2024 - 17 mars 2008 à 00:39
Bonjour,
Je vaudrais savoir s'il existe, en C++, une fonction toute faite qui recherche des caractères dans un string et qui renvoie leur position.
Merci...
A voir également:

2 réponses

mamiemando Messages postés 33108 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 mai 2024 7 753
17 mars 2008 à 00:39
Si ça existe et c'est tout simplement la méthode find :
https://community.hpe.com/t5/custom/page/page-id/HPPSocialUserSignonPage?redirectreason=permissiondenied&referer=https%3A%2F%2Fcommunity.hpe.com%2Ft5%2FServers-Systems-The-Right%2FSGI-com-Tech-Archive-Resources-now-retired%2Fba-p%2F6992583

Si tu cherches toutes les occurrences il suffit d'écrire une boucle et d'indiquer à find d'effectuer la recherche après la dernière occurrence repérée (paramètre pos).
#include <iostream>
#include <string>

int main(){
    const std::string
        str =  "abtrtzfvzabokkôpkabcsqcab",
        sub_str =  "ab";
    for(std::size_t pos = 0;pos != std::string::npos && pos < str.size();++pos){
        std::size_t idx = str.find(sub_str,pos);
        if(pos != std::string::npos){
            std::cout << sub_str << " trouvé dans " << str
                << " à la position " << idx << std::endl;
        }
        pos = idx + 1;
    }
    return 0;
}

donnera :
ab trouvé dans abtrtzfvzabokkôpkabcsqcab à la position 0
ab trouvé dans abtrtzfvzabokkôpkabcsqcab à la position 9
ab trouvé dans abtrtzfvzabokkôpkabcsqcab à la position 18
ab trouvé dans abtrtzfvzabokkôpkabcsqcab à la position 24

Evidemment la chaîne que tu recherches peut être de longueur 1... comprendre tu peux rechercher de la même façon un caractère et là ça ne vaut même pas le coup de faire un find ;-)

Bonne chance
7
Bonjour,

Je crois que ça n'existe pas mais on peut la programmer

J'avais déjà répondu à ce genre de question, regardes sur ce post si tu peux en tirer quelque chose.
Il s'agit de la fonction instr() tirée du VB qui renvoie la position de première occurence d'une chaine dans une autre chaine.

http://www.commentcamarche.net/forum/affich 5353155 instr en c ne fonctionne pas#0

Salut.
3