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 :

[FAQ] convertir une cha�ne en majuscule


Sujet :

C++

  1. #1
    r0d
    r0d est actuellement connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut [FAQ] convertir une cha�ne en majuscule
    Bonjour,

    j'ai essay� d'impl�menter cette faq. Cela consiste � convertir une cha�ne de caract�res en majuscule.

    Voici mon code (c'est le m�me que la faq):

    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
    #include <algorithm>
    #include <cctype>
    #include <string>
    //...
     
    struct ps_toupper
    { 
        char operator()(char c) const 
        {
            return std::toupper(static_cast<unsigned char>(c));
        } 
    };
     
    std::string UpperCase(std::string str) 
    {
        return std::transform(str.begin(), str.end(), str.begin(), ps_toupper()); // erreur ici
    }
    Et �a ne compile pas. J'obtiens une erreur sur la ligne "std::transform". L'erreur est la suivante:
    c:\dev\tests\dumcpp\cconfigreader.cpp(157) : error C2664: 'std::basic_string<_Elem,_Traits,_Ax>::basic_string(std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it)' : cannot convert parameter 1 from 'std::_String_iterator<_Elem,_Traits,_Alloc>' to 'std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it'
    with
    [
    _Elem=char,
    _Traits=std::char_traits<char>,
    _Ax=std::allocator<char>
    ]
    and
    [
    _Elem=char,
    _Traits=std::char_traits<char>,
    _Alloc=std::allocator<char>
    ]
    and
    [
    _Elem=char,
    _Traits=std::char_traits<char>,
    _Ax=std::allocator<char>
    ]
    No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
    Je suis sous Visual Studio 2005 (donc Windows).

    Je n'ai pas encore cherch� d'o� vient le probl�me, je tenais d'abord � vous en faire part.

  2. #2
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par d�faut
    sous linux ca marche bien :p

  3. #3
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    std::transform ne renvoie pas la cha�ne, mais un it�rateur sur le dernier �lement trait�.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    std::string UpperCase(std::string str) 
    {
        std::transform(str.begin(), str.end(), str.begin(), ps_toupper());
        return str;
    }

  4. #4
    r0d
    r0d est actuellement connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut



  5. #5
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

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

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    Convertir une cha�ne en majuscules est une op�ration assez compliqu�e, voir sur le site d'Unicode.
    Le code fourni ne marchera qu'avec certains charset mono-byte et certains langages.

    En effet :
    - il faut d'importantes tables pour savoir quel est le caract�re correspondant
    - certaines transformations ne sont pas 1:1, par exemple � qui devient SS en majuscules
    - dans certaines langues, le contexte est n�cessaire. Par exemple Σ se met en minuscule de mani�re diff�rente s'il est au d�but σ ou � la fin du mot ς. J'imagine qu'il y aussi le m�me genre de chose pour l'autre sens.

  6. #6
    r0d
    r0d est actuellement connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut
    Oui je sais bien (mais tu fais bien de le rappeler), mais dans mon cas, il s'agit de lire un fichier tr�s sp�cifique, en anglais, dans lequel je sais qu'il n'y aura aucun caract�re sp�cial, aucune ponctuation, aucun accent, etc.

  7. #7
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Citation Envoy� par loufoque
    Convertir une cha�ne en majuscules est une op�ration assez compliqu�e, voir sur le site d'Unicode.
    Le code fourni ne marchera qu'avec certains charset mono-byte et certains langages.

    En effet :
    - il faut d'importantes tables pour savoir quel est le caract�re correspondant
    - certaines transformations ne sont pas 1:1, par exemple � qui devient SS en majuscules
    - dans certaines langues, le contexte est n�cessaire. Par exemple Σ se met en minuscule de mani�re diff�rente s'il est au d�but σ ou � la fin du mot ς. J'imagine qu'il y aussi le m�me genre de chose pour l'autre sens.
    C'est tr�s exactement ce que l'on explique en d�tail dans la Q/R de la FAQ dont est inspir�e cette discution

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

Discussions similaires

  1. R�ponses: 7
    Dernier message: 20/09/2006, 13h42
  2. Convertir une cha�ne binaire en signal carr�
    Par hotdog dans le forum Signal
    R�ponses: 1
    Dernier message: 06/09/2006, 10h01
  3. Convertir une cha�ne utf8 en iso-8859-1
    Par dredre dans le forum ASP
    R�ponses: 1
    Dernier message: 05/05/2006, 00h48
  4. Convertir une cha�ne en date
    Par davinout dans le forum Langage
    R�ponses: 4
    Dernier message: 25/04/2006, 19h35
  5. R�ponses: 3
    Dernier message: 28/09/2003, 10h46

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