IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques Discussion :

<regex> trouver un motif


Sujet :

Bibliothèques

  1. #1
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 014
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut <regex> trouver un motif
    Bonjour, je débute, j'ai fait une fonction pour saisir un entier, comme ça passe par un string j'ai décidé d'utiliser les regex pour voir si la chaine saisie n'est composée que de chiffre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <regex>
     
    [...]
     
    void Connection::initPort() {
    	string strPort="";
    	regex rx("#[0-9]{1,5}#");
    	do {
    		cout << "Port actuel : " << port << ". Saisissez un nouveau numero de port : " << endl << ">>";
    		getline(cin, strPort);
    	} while(!regex_match(strPort, rx));
    }
    Eclipse me met comme erreurs soulignés en rouge (regex rx.. ->expected ";" before rx) et regex_match ... ->regex_match’ was not declared in this scope

    j'inclus pourtant bien <regex>
    Ce doit etre une erreur de débutant peut etre que ça parlera à certains d'entre vous.
    Merci pour votre aide précieuse.

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    à tous les coups, c'est un certain std:: qui manque.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 014
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par leternel Voir le message
    à tous les coups, c'est un certain std:: qui manque.
    J'ai mis un using namespace std; sinon meme avec un ajout de std:: ça ne marche toujours pas.

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Essaie de compiler ce code-ci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include <regex>
    #include <iostream>
    #include <string>
     
    using namespace std;
     
    int main() {
    	string port="8080";
    	string strPort;
    	regex rx("#[0-9]{1,5}#");
    	do {
    		cout << "Port actuel : " << port << ". Saisissez un nouveau numero de port : " << endl << ">>";
    		getline(cin, strPort);
    	} while(!regex_match(strPort, rx));
    	port = strPort;
    	cout << "OK : " << port << endl;
    	return 0;
    }
    S'il compile, tu as une erreur dans tes includes, ou une interférence de namespace

    S'il ne compile pas, ton Eclipse est mal configuré, et/ou ne supporte pas (une partie de) C++11
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  5. #5
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 014
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par leternel Voir le message
    Essaie de compiler ce code-ci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include <regex>
    #include <iostream>
    #include <string>
     
    using namespace std;
     
    int main() {
    	string port="8080";
    	string strPort;
    	regex rx("#[0-9]{1,5}#");
    	do {
    		cout << "Port actuel : " << port << ". Saisissez un nouveau numero de port : " << endl << ">>";
    		getline(cin, strPort);
    	} while(!regex_match(strPort, rx));
    	port = strPort;
    	cout << "OK : " << port << endl;
    	return 0;
    }
    S'il compile, tu as une erreur dans tes includes, ou une interférence de namespace

    S'il ne compile pas, ton Eclipse est mal configuré, et/ou ne supporte pas (une partie de) C++11
    En fait il compile mais me met les même erreurs qu'avec le source d'origine.
    18:32:20 **** Incremental Build of configuration Debug for project test ****
    make all
    Building file: ../main.cpp
    Invoking: Cross G++ Compiler
    g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.cpp"
    In file included from /usr/include/c++/4.4/regex:35,
    from ../main.cpp:9:
    /usr/include/c++/4.4/c++0x_warning.h:31:2: error: #error This file requires compiler and library support for the upcoming ISO C++ standard, C++0x. This support is currently experimental, and must be enabled with the -std=c++0x or -std=gnu++0x compiler options.
    ../main.cpp: In function ‘int main()’:
    ../main.cpp:18: error: ‘regex’ was not declared in this scope
    ../main.cpp:18: error: expected ‘;’ before ‘rx’
    ../main.cpp:22: error: ‘rx’ was not declared in this scope
    ../main.cpp:22: error: ‘regex_match’ was not declared in this scope
    make: *** [main.o] Erreur 1

    18:32:21 Build Finished (took 370ms)
    Merci.

    ps: je ré-édite j'avais pas vu l'erreur je ne sais pas trop ou ajouter "-std=c++0x"

    Merci

  6. #6
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Citation Envoyé par stc074 Voir le message
    je ré-édite j'avais pas vu l'erreur je ne sais pas trop ou ajouter "-std=c++0x"
    Merci
    En gros, il faut faire en sorte que la ligne de commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.cpp"
    contienne aussi -std=c++0x (voire -std=c++11, si tu as g++ 4.7)

    Tu utilise un makefile (d'après le "make all"), il faut modifier dedans le CFlags ou CPPFlags (ou une variante avec les majuscules).

    Si tu utilise un IDE, il faut chercher dans ses options de compilations pour rajouter l'option en question. éventuellement, ca peut être une case "support du C++11" ou "support du C++0x"


    PS: les erreurs empèchent la compilation, seuls les warnings sont tolérés. Donc, non, ca ne compile pas.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. probabilité de trouver un motif
    Par Jasmine80 dans le forum Bioinformatique
    Réponses: 0
    Dernier message: 20/02/2009, 16h14
  2. [RegEx] regex pour trouver une phrase - caractère espace
    Par L0007 dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2008, 17h01
  3. [Regex posix] Problème de motifs
    Par Yoshio dans le forum POSIX
    Réponses: 1
    Dernier message: 29/03/2008, 17h17
  4. [boost] Regex search : trouver l'index
    Par Choupi dans le forum Boost
    Réponses: 4
    Dernier message: 03/12/2007, 11h17
  5. [RegEx] Trouver des motifs qui ne contiennent pas un certain motif
    Par pellec dans le forum Langage
    Réponses: 4
    Dernier message: 19/07/2007, 09h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo