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 :

detection d'un int sous un format string?


Sujet :

C++

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut detection d'un int sous un format string?
    Bonjour tous,

    j'ai besoin d'aide pour quelque chose surement assez facile pour vous mais que je ne vois pas trop comment faire.

    1°) mon problème:


    j'ai une fonction qui lit un fichier texte et met un "string" dans la variable "AAA" qui est biensur de type string.
    le texte est du type: A3B8, ou AA99RR1, ou A9R1E6R7

    dans ce texte il y a 1 ou 2 lettre puis 1 ou 2 chiffre puis 1 ou 2 lettre puis 1 ou 2 chiffres.... etc

    2°) ce que je voudrais faire:


    par exemple pour AA8B99:

    je voudrais faire un petit code qui permet de mettre AA et B dans les lignes d'un vector et 8 et 99 dans des lignes d'un autre vector


    3°) tentative:


    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    void bibi
    {
    //---------
    string AAA= "AA8B99";
    int i, taille = AAA.size ();
    vector <string> lettre;
    vector <string> chiffre;
    //---------
     
    //---------
    cout << "La chaine comporte " << taille << " caracteres." << endl;
     
    for (i = 0 ; i < taille ; i++)
    {
    cout << "caractère " << i << " = " << AAA.at(i) << endl;
     
    if (AAA.at(i)==texte)
    {
           if (AAA.at(i+1)==texte)
           {
                   lettre.push_back(AAA.at(i)+AAA.at(i+1))
           }
           else (AAA.at(i+1)==nombre)
           {
                   lettre.push_back(AAA.at(i))
           }
    }
    else (AAA.at(i)==nombre)
    {
           if (AAA.at(i+1)==nombre)
           {
                   chiffre.push_back(AAA.at(i)+AAA.at(i+1))
           }
           else (AAA.at(i+1)==texte)
           {
                   chiffre.push_back(AAA.at(i))
           }
    }
    }
    }

    4°) problème persistant:


    mon problème comme vous avez du le remarquer dans le code est les conditions que je place dans les if et else:

    J'aimerai que si AAA.at(i) est un nombre alors on fait quelque chose et si AAA.at(i) est une lettre alors on fait autre chose.


    ==> Le problème est comment détecter si l'on a un nombre ou une lettre car les nombres que j'ai dans AAA sont de type string


    en esperant que vous pourrez m'aider

    ----------------------------------------
    ps: J'ai pensé à faire une convertion de string vers double avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    istringstream iss1( AAA.at(i) );               
    iss1 >> aaa;
    mais je ne sais toujours pas comment m'en sortir meme avec cela...

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    j'ai peut etre trouvé :

    il faudrait dans les conditions que je fasse une convertion de chaque caractère et que je compare à un des chiffre allant de 0 à 9.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    istringstream iss1( AAA.at(i) );               
    iss1 >> aaa;
    if (aaa==0 || aaa=1 || aaa=.... || aaa=9)
    {
     
    }
    else //si caractere différent de ceux ci dessus alors ca veut dire que ca sera //une lettre.
    {
     
    }

  3. #3
    Membre chevronné Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Par défaut
    Bonjour!

    Pourquoi ne pas se baser tout simplement sur la valeur ascii de chaque caractère?

    Tu regardes le code, s'il est dans la plage des entier.. c'est un entier, sinon, c'est un caractère..

    Tu peux aussi jeter un coup d'oeuil sur les regex.. (ce qui me fait me poser la question: on peut vérifier qu'une chaine correspond bien à un pattern, mais peut on découper une chaine selonun pattern de type regex?)

  4. #4
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Salut,
    voila bien longtemps que je n'ai pas fait de C++ aussi je vais ptre dire une bêtise, mais pour autant que je m'en souvienne std::string.at(i) retourne un char.
    Et un char c'est un nombre dont tu peux en faire une correspondance avec la table ASCII :
    - les nombres : > 47 et < 58
    - les minuscules : > 96 et < 123
    - les majuscules : > 64 et < 91

    donc je dirais bien un truc du genre :
    Code C++ : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    inline bool isNumeric(char c)
    {
        return ( c > 47 && c < 58); // On pourrais aussi écrire c >= '0' && c <= '9'
    }
     
    inline bool isCapital(char c)
    {
        return ( c > 64 && c < 91 ); // On pourrais aussi écrire c >= 'A' && c <= 'Z'
    }
     
    // ...
     
    if ( isCapital(AAA.at(i)) ) // Majuscule
    {
           if ( isCapital(AAA.at(i + 1)) )
           {
                   lettre.push_back( AAA.at(i) + AAA.at(++i)); // ++i car il faut consommer également i + 1
           }
           else ( isNumeric(AAA.at(i + 1)) )
           {
                   lettre.push_back(AAA.at(i));
           }
    }
    else ( isNumeric(AAA.at(i)) )
    {
           if ( isNumeric(AAA.at(i + 1)) )
           {
                   chiffre.push_back( AAA.at(i) + AAA.at(++i)); // ++i car il faut consommer également i + 1
           }
           else ( isCapital(AAA.at(i + 1)) )
           {
                   chiffre.push_back( AAA.at(i) );
           }
    }

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    Citation Envoyé par seeme Voir le message
    Bonjour!
    Pourquoi ne pas se baser tout simplement sur la valeur ascii de chaque caractère?
    Tu regardes le code, s'il est dans la plage des entier.. c'est un entier, sinon, c'est un caractère..
    Tu peux aussi jeter un coup d'oeuil sur les regex.. (ce qui me fait me poser la question: on peut vérifier qu'une chaine correspond bien à un pattern, mais peut on découper une chaine selonun pattern de type regex?)
    bonjour,
    à oui pourquoi pas , je n'ai pas pensé à cela car je ne maitrise pas trop les convertions ascii.

    D'ailleurs je vais faire comme je viens de trouver car j'ai peur de faire une erreur.

    si ca ne fonctionne pas je vous tient informé.

    (merci d'avoir pris le temps de repondre)

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Salut !

    C'est facile, tu trouveras sur cette page les méthodes utiles à la résolution de ton problème.

    Utilise "isalpha" pour voir si c'est une lettre.
    Utilise "isdigit" pour voir si c'est un chiffre.

    Je déconseille les solutions de types ASCII, ce sera cassé s'il y a des variations liées à la locale.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    Citation Envoyé par ctxnop Voir le message
    Salut,
    voila bien longtemps que je n'ai pas fait de C++ aussi je vais ptre dire une bêtise, mais pour autant que je m'en souvienne std::string.at(i) retourne un char.
    Et un char c'est un nombre dont tu peux en faire une correspondance avec la table ASCII :
    - les nombres : > 47 et < 58
    - les minuscules : > 96 et < 123
    - les majuscules : > 64 et < 91

    donc je dirais bien un truc du genre :
    Code C++ : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    inline bool isNumeric(char c)
    {
        return ( c > 47 && c < 58); // On pourrais aussi écrire c >= '0' && c <= '9'
    }
     
    inline bool isCapital(char c)
    {
        return ( c > 64 && c < 91 ); // On pourrais aussi écrire c >= 'A' && c <= 'Z'
    }
     
    // ...
     
    if ( isCapital(AAA.at(i)) ) // Majuscule
    {
           if ( isCapital(AAA.at(i + 1)) )
           {
                   lettre.push_back( AAA.at(i) + AAA.at(++i)); // ++i car il faut consommer également i + 1
           }
           else ( isNumeric(AAA.at(i + 1)) )
           {
                   lettre.push_back(AAA.at(i));
           }
    }
    else ( isNumeric(AAA.at(i)) )
    {
           if ( isNumeric(AAA.at(i + 1)) )
           {
                   chiffre.push_back( AAA.at(i) + AAA.at(++i)); // ++i car il faut consommer également i + 1
           }
           else ( isCapital(AAA.at(i + 1)) )
           {
                   chiffre.push_back( AAA.at(i) );
           }
    }

    merci pour cette reponse, ca me plait bien en fait votre idée, je crois que je vais faire cela.

    je vous tient informé si j'ai un problème mais je pense à présent que c'est tout bon!

    merci

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    Citation Envoyé par jblecanard Voir le message
    Salut !
    C'est facile, tu trouveras sur cette page les méthodes utiles à la résolution de ton problème.
    Utilise "isalpha" pour voir si c'est une lettre.
    Utilise "isdigit" pour voir si c'est un chiffre.
    Je déconseille les solutions de types ASCII, ce sera cassé s'il y a des variations liées à la locale.
    ok, je vais regarder (si il y a plus facile je suis preneur )

    A+

  9. #9
    Membre chevronné Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Par défaut
    Nan bah là, plus facile que isalpha ou isdigit...

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    Citation Envoyé par seeme Voir le message
    Nan bah là, plus facile que isalpha ou isdigit...
    lol je parlais de ca solution: je suis preneur car ca à l'air plus facile


    A+ et merci tous!

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Sinon pour se la péter, c'est torchable en quelques ligne avec Phoenix
    Edit: 21did21, n'utilise pas ce code là mais celui juste après.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    #include <boost/spirit/include/qi.hpp>
    #include <boost/spirit/include/phoenix.hpp>
    #include <boost/spirit/include/phoenix_core.hpp>
    #include <boost/spirit/include/phoenix_operator.hpp>
    #include <boost/spirit/include/phoenix_object.hpp>
    #include <boost/fusion/include/adapt_struct.hpp>
    #include <boost/foreach.hpp>
    #include <iostream>
    #include <string>
    #include <vector>
     
    namespace qi = boost::spirit::qi;
    namespace ascii = boost::spirit::ascii;
    namespace phoenix = boost::phoenix;
     
    int main(int argc, char * argv[])
    {
    	using qi::digit;
    	using qi::alpha;
    	using qi::_1;
    	using ascii::space;
    	using phoenix::ref;
    	using phoenix::push_back;
     
    	std::string input("A9RO1E66R7");
    	std::string tmp1, tmp2;
    	std::vector<std::string> lettres, nombres;
     
    	std::string::const_iterator iter = input.begin(); std::string::const_iterator end = input.end();
     
    	bool succes = ( qi::parse(iter,end,
    		*( 
    		(alpha [ref(tmp1) = _1] >>-alpha [ref(tmp1) += _1])[push_back(ref(lettres),ref(tmp1))] 
    		| (digit [ref(tmp2) = _1] >>-digit[ref(tmp2) += _1])[push_back(ref(nombres),ref(tmp2))] 
    		)) && iter==end );
     
    	if(succes)
    	{
    		std::cout << "Lettres: ";
    		BOOST_FOREACH(std::string& lettre, lettres) std::cout << lettre << "/";
    		std::cout << std::endl;
     
    		std::cout << "Nombres: ";
    		BOOST_FOREACH(std::string& nombre, nombres) std::cout << nombre << "/";
    		std::cout << std::endl;
    	}
    	else
    	{
    		std::cout << "Echec: la chaîne n'a pas le bon format";
    	}
     
        return 0;
    }

  12. #12
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    lol, ça y est tu mets du phoenix et du spirit partout !

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Maintenant que je l'ai appris je trouve que c'est trop de la balle

  14. #14
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    C'était juste pour le style ! Voilà une version sans boost qui marche :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    #include <iostream>
    #include <sstream>
    #include <string>
    #include <vector>
    #include <locale>
     
     
    void parserChaine(const std::string& iChaine, std::vector<std::string>& lettres, std::vector<double>& nombres)
    {
    	std::ostringstream accumulator;
    	std::locale loc;
     
    	for(std::string::const_iterator caractere = iChaine.begin(); caractere != iChaine.end(); caractere++)
    	{
    		accumulator.str("");
     
    		if(std::isalpha(*caractere,loc))
    		{
    			accumulator << *caractere;
    			if(caractere+1 != iChaine.end() && std::isalpha(*(caractere+1),loc))
    				accumulator << *(++caractere);
     
    			lettres.push_back(accumulator.str());
    		}
    		if(std::isdigit(*caractere,loc))
    		{
    			accumulator << *caractere;
    			if(caractere+1 != iChaine.end() && std::isdigit(*(caractere+1),loc))
    				accumulator << *(++caractere);
     
    			double valeur;
    			std::istringstream convertisseur(accumulator.str());
    			convertisseur >> valeur;
     
    			nombres.push_back(valeur);
    		}
    	}
    }
     
     
    int main(int argc, char * argv[])
    {
    	std::string input = "AA1G2KL66M8PP96";
    	std::vector<std::string> lettres;
    	std::vector<double> nombres;
    	parserChaine(input,lettres,nombres);
     
    	std::cout << "Lettres: ";
    	for(std::vector<std::string>::iterator it = lettres.begin(); it != lettres.end(); it++) std::cout << *it << "/";
    	std::cout << std::endl;
     
    	std::cout << "Nombres: ";
    	for(std::vector<double>::iterator it = nombres.begin(); it != nombres.end(); it++) std::cout << *it << "/";
    	std::cout << std::endl;
     
        return 0;
    }
    Edit : Conversion des chiffres en double ajoutée. Je sais pas si tu as besoin de double, peut être que des int feraient l'affaire.

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    j'ai opté pour la solution de CTXNOP mais j'ai fais quelques modifs pour me simplifier la suite de mon programme (et car il y a 2-3 trucs que je n'ai pas trop compris..)

    le probleme c'est qu'à présent mon compilateur bloque:

    afin que mon probleme soit plus presentable j'ai fait un nouveau post:
    http://www.developpez.net/forums/d10...s-compilation/

  16. #16
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    La solution de CTXNOP pose un problème car tu n'est quand même pas censé savoir comment sont encodés tes caractères.

    Pourquoi tu ne copies/colle pas le bout de code que je viens de donner ? Il fonctionne, je l'ai testé !

  17. #17
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    Citation Envoyé par jblecanard Voir le message
    Pourquoi tu ne copies/colle pas le bout de code que je viens de donner ? Il fonctionne, je l'ai testé !
    merci pour ton code mais je suis un gros débutant et j'essai d'utiliser que des choses que je maitrise car dans 2-3ans je dois être capable de vite recomprendre tout mon code

    Citation Envoyé par jblecanard Voir le message
    La solution de CTXNOP pose un problème car tu n'est quand même pas censé savoir comment sont encodés tes caractères.
    j'ai pas saisi le problème... pourquoi je ne connaitrez pas l'encodage...?

  18. #18
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Citation Envoyé par 21did21 Voir le message
    merci pour ton code mais je suis un gros débutant et j'essai d'utiliser que des choses que je maitrise car dans 2-3ans je dois être capable de vite recomprendre tout mon code
    Tu devrais prendre le temps d'apprendre les méthodes que j'ai utilisées : si tu te contentes de n'utiliser que des choses que tu maîtrises alors que tu es débutant (et que par définition, tu maîtrises peu de choses), tu ne progresseras jamais ! C'est de la manipulation de chaîne de caractère de base, ça te resservira tout le temps, tu verras .

    Citation Envoyé par 21did21 Voir le message
    j'ai pas saisi le problème... pourquoi je ne connaitrez pas l'encodage...?
    Parce que ça peut dépendre de la machine, du système d'exploitation, de la langue de l'utilisateur... Et aussi parce que c'est beaucoup moins compréhensible !

  19. #19
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    je comprends ce que tu veux dire, je vais relire ton code pour voir si je comprend mieux mais il m'avais semblait à premiere vu tres fortement indigeste pour moi

    pour info: j'utilise des choses simples car je n'ai pas beaucoup de temps dans mon projet à consacrer à la partie programmation et je dois maitriser ce que je fais c'est pour cela que j'utilise les methodes les plus simple possible (sauf si elles sont vraiment pourrie)

  20. #20
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Peut être parce que tu as lu mon délire avec Spirit . Il faut prendre l'autre, et si tu ne comprend pas une partie, je (ou un autre membre) t'expliqueras.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Soucis Format String/Int pour requête LIKE
    Par bonuxis dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/10/2009, 15h20
  2. Réponses: 7
    Dernier message: 26/06/2007, 10h36
  3. [MySQL] regrouper les données sous un format différent
    Par Erakis dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/01/2006, 15h11
  4. Exporter sous un format jpeg
    Par Kuollu dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 02/05/2005, 10h29
  5. Réponses: 11
    Dernier message: 08/10/2004, 15h12

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