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

C++ Discussion :

sscanf et cha�ne de caract�re contenant des espaces


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Femme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2011
    Messages
    266
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 35
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 266
    Par d�faut sscanf et cha�ne de caract�re contenant des espaces
    Bonjour bonjour,

    voila j'ai un petit soucis concernant la fonction "sscanf" je m'en sert actuellement pour obtenir certaines donn�es dans une cha�ne de caract�res par exemple :

    dans la cha�ne de caract�res :
    q { gsave } bind def
    avec la fonction :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    int nbVariableRecup= sscanf( temp.c_str(),"%s { %s } bind def",aRemplacer,remplacement);
    je peut obtenir la chaine "q" et la cha�ne "gsave"

    or j'aurais besoin de pouvoir r�cup�rer TOUT ce qui est entre mes parenth�ses ainsi pour la cha�ne :

    cm { 6 array astore concat } bind def
    j'obtiendrai "cm" et "6 array astore concat" or ce que j'obtiens pour la deuxi�me variable est : "6" a cause de l'espace apr�s le "6"

    Existerait-il une solution a cela en utilisant sscanf ?

  2. #2
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de caf�
    Inscrit en
    Mai 2007
    Messages
    1 048
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France

    Informations professionnelles :
    Activit� : Consommateur de caf�
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par d�faut
    Bonjour,

    Essaie avec �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    int nbVariableRecup= sscanf( temp.c_str(),"%s { %[^\n]s } bind def",aRemplacer,remplacement);

  3. #3
    Membre �clair�
    Femme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2011
    Messages
    266
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 35
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 266
    Par d�faut
    je viens d'essayer �a mais pour la ligne
    q { gsave } bind def
    je n'obtient plus "gsave" mais "gsave }bind def"

    je ne connais pas bien "[^\n]" mais est-il possible d'avoir deux conditions c'est � dire : \n et } pour �viter la boucle infini.

  4. #4
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de caf�
    Inscrit en
    Mai 2007
    Messages
    1 048
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France

    Informations professionnelles :
    Activit� : Consommateur de caf�
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par d�faut
    tu peux avoir:
    Mais si tu fais du C++ et pas du C alors n'utilises pas sscanf.


    EDIT: Renseigne toi sur les regex!

  5. #5
    Membre �clair�
    Femme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2011
    Messages
    266
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 35
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 266
    Par d�faut
    je fait bien du c++, sscanf est la seule fonction que je connaisse qui fasse exactement ce que je veux ( je suis d�butante donc tout les conseils sont bon a prendre ) que devrais-je utiliser � la place de sscanf?

    EDIT : en tout cas avec le sscanf ta solution "%[^\n}]s" fonctionne nickel ^^

  6. #6
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de caf�
    Inscrit en
    Mai 2007
    Messages
    1 048
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France

    Informations professionnelles :
    Activit� : Consommateur de caf�
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par d�faut
    Tu dois utliser les std::tr1::regex ou std::regex ( tout va d�pendre de la version de ton compilateur, le deuxi�me n'est dispo que depuis c++ 11)

    Il existe la librairie boost qui peut le faire mais un peu lourde pour d�buter...


    Un solution est de travailler avec la std actuelle ( c++98 ):

    Un algorithme simple:

    Tu as ta cha�ne "q { gsave } bind def".
    Tu cherche la position du premier { et du dernier }.
    avec std::string, std::find, les iterateurs tu dois pouvoir le faire tr�s rapidement


    EDIT: regex veut dire REGular EXpression pour tes recherches google sur le sujet si tu veux en savoir plus!

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Caract�re num�rique contenant des espaces
    Par nolll dans le forum SAS Base
    R�ponses: 8
    Dernier message: 19/11/2019, 18h58
  2. R�ponses: 2
    Dernier message: 07/08/2012, 16h20
  3. [MySQL] Affichage d’une cha�ne de caract�res contenant des parenth�ses
    Par mathiotp dans le forum PHP & Base de donn�es
    R�ponses: 2
    Dernier message: 20/11/2007, 20h31
  4. Tri sur une cha�ne de caract�res contenant des nombres
    Par arnaud_verlaine dans le forum Langage SQL
    R�ponses: 2
    Dernier message: 23/05/2006, 11h52
  5. R�ponses: 2
    Dernier message: 06/12/2002, 07h50

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