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

Boost C++ Discussion :

Pb avec boost::lambda


Sujet :

Boost C++

Vue hybride

vandamme Pb avec boost::lambda 11/06/2009, 11h23
vandamme Bon, apparemment j'y arrive... 11/06/2009, 11h46
Arzar Bonjour, C'est un exercice... 11/06/2009, 13h56
vandamme Super solution. Ben... 11/06/2009, 14h21
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Par défaut Pb avec boost::lambda
    Bonjour,

    Je decouvre boost::lambda et je voudrai ecrire une fonction toute bete qui compare 2 chaines case insensitive.
    Pour cela, j'utilise boost lambda :

    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
     
    #include <boost/lambda/lambda.hpp>
    #include <boost/lambda/casts.hpp>
    #include <string>
    #include <algorithm>
    #include <cctype>
     
    namespace bll = boost::lambda;
     
    bool strcmpNoCase(const string& s1, const string& s2)
    {
            return (s1.size() == s2.size()) &&
                    equal(s1.begin(), s1.end(),
                    s2.begin(),
                    tolower(bll::ll_static_cast<int>(bll::_1)) == tolower(bll::ll_static_cast<int>(bll::_2)));
    }
    En gros je voudrais passer une lambda expression a la fonction tolower et ca compile pas, voici l'erreur :

    boostlambda.cpp: In function `bool strcmpNoCase(const std::string&, const std::string&)':
    boostlambda.cpp:26: error: cannot convert `const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<1, boost::lambda::cast_action<boost::lambda::static_cast_action<int> > >, boost::tuples::tuple<boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >' to `int' for argument `1' to `int tolower(int)'

    C'est plutot abscons pour moi, si quelqu'un pouvait m'aider et me dire comment passer un _1 a une fonction, peut etre avec un boost::bind ?

    Merci !

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Par défaut
    Bon, apparemment j'y arrive avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    bool strcmpNoCase(const string& s1, const string& s2)
    {
            return (s1.size() == s2.size()) &&
                    std::equal(s1.begin(), s1.end(),
                    s2.begin(),
                    boost::bind(::tolower, bll::_1) == boost::bind(::tolower, bll::_2));
    }

  3. #3
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Bonjour,
    C'est un exercice pour se faire la main avec boost:lambda ?
    Sinon, il y a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include <boost/algorithm/string.hpp>
    std::string str1 = "hello, world!";
    std::string str2 "HELLO, WORLD!";
    if (boost::iequals(str1, str2))
    {
        // Strings are identical
    }

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Par défaut
    Super solution.

    Ben decidement, boost a des ressources inepuisables.
    Oui, c'est une sorte d'exercice pour me faire la main sur boost::lambda et boost::bind

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [boost] Problème avec boost::function
    Par Bakura dans le forum Boost
    Réponses: 3
    Dernier message: 22/03/2007, 20h08
  2. Questions de perfomance avec boost::thread
    Par Rafy dans le forum Boost
    Réponses: 36
    Dernier message: 05/10/2006, 15h21
  3. probleme de compilation avec boost
    Par doof dans le forum Bibliothèques
    Réponses: 7
    Dernier message: 07/06/2005, 21h38
  4. Calculer un inverse de matrice avec boost?
    Par Clad3 dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 02/06/2005, 18h38
  5. probleme avec boost et devcpp
    Par Krost dans le forum Dev-C++
    Réponses: 12
    Dernier message: 02/01/2005, 19h11

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