OVH Cloud OVH Cloud

tolower - toupper sur les string

13 réponses
Avatar
Guillaume Gourdin
Bonjour à tous, je ne trouve pas de fonctions qui permettent de mettre une
std::string en minuscule ou en majuscule. En existe t-il ? Et si ce n'est
pas le cas, comment me conseillez vous de procéder ?

Merci.

10 réponses

1 2
Avatar
Jean-Marc Bourguet
"Guillaume Gourdin" writes:

Bonjour à tous, je ne trouve pas de fonctions qui permettent de mettre une
std::string en minuscule ou en majuscule. En existe t-il ? Et si ce n'est
pas le cas, comment me conseillez vous de procéder ?


std::ctype<>::toupper() est ce qui est sense etre utilise, de la a
dire que c'est utilisable, il faut vraissemblablement ne pas avoir a
traiter l'allemand et admettre que repasser aux char* est une bonne
chose.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
kanze
Jean-Marc Bourguet wrote in message
news:...
"Guillaume Gourdin" writes:

Bonjour à tous, je ne trouve pas de fonctions qui permettent de mettre une
std::string en minuscule ou en majuscule. En existe t-il ? Et si ce n'est
pas le cas, comment me conseillez vous de procéder ?


std::ctype<>::toupper() est ce qui est sense etre utilise, de la a
dire que c'est utilisable, il faut vraissemblablement ne pas avoir a
traiter l'allemand et admettre que repasser aux char* est une bonne
chose.


Indépendamment de la méthode utilisée, il ne faut pas perdre de vue
qu'une telle transformation perd toujours de l'information. Je n'arrive
pas à rétrouver le document, mais dans le temps, il y avait sur le site
Unicode une explication de comment on doit procéder dans une application
interactive. Ce dont je me souviens très bien, c'était qu'il fallait
garder la chaîne originale, précisemment parce qu'une fois la
translation effectuée, c'était impossible à le réstituer si on ne
l'avait pas garder. Le 'ß' de l'allemand est un exemple type -- il
devient "SS", mais il y a aussi des "ss" en allemand qui devient "SS".
(Il existe même des doublets du genre Masse/Maße. Selon les règles,
quand un doublet existe, le 'ß' devient "SZ", et non "SS". Mais cette
règle est peu connue, et souvent éfreinte. Ce qui fait que une fois
arrivée à "MASSE", c'est impossible à revenir, même avec un
dictionnaire.)

Aussi, les règles pour l'allemand sont différentes en Suisse qu'en
Allemagne ou l'Autriche.

Même en français, il existe des conventions différentes pour les
caractères accentués. Même si toutes les autorités semblent préférer que
'é' donne 'É', certains utilise la convention que 'é' donne 'E', voire
même que ça dépend du contexte : 'É' en initial, mais 'E' ailleurs.

Et ce n'est qu'un début. Si on quitte l'Europe occidental...

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
Falk Tannhäuser
wrote:
Même en français, il existe des conventions différentes pour les
caractères accentués. Même si toutes les autorités semblent préférer que
'é' donne 'É', certains utilise la convention que 'é' donne 'E'
Ce qui donne par exemple "UN INTERNE TUE A L'ASILE PSYCHIATRIQUE"

- au moins 4 interprétations sont possibles...

Falk

Avatar
Erwann ABALEA
On Thu, 22 Apr 2004, Falk Tannhäuser wrote:

wrote:
Même en français, il existe des conventions différentes pour les
caractères accentués. Même si toutes les autorités semblent préférer que
'é' donne 'É', certains utilise la convention que 'é' donne 'E'
Ce qui donne par exemple "UN INTERNE TUE A L'ASILE PSYCHIATRIQUE"

- au moins 4 interprétations sont possibles...


De toute façon, un mec qui gueule comme ça, il ne faut pas l'écouter... ;)

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
Think carefully before wishing, it might just come true.


Avatar
Michel Michaud
Dans news:,
Jean-Marc Bourguet wrote in message
news:...
"Guillaume Gourdin" writes:

Bonjour à tous, je ne trouve pas de fonctions qui permettent de
mettre une std::string en minuscule ou en majuscule. En existe
t-il ? Et si ce n'est pas le cas, comment me conseillez vous de
procéder ?




La vraie question est de savoir à quoi cette conversion servirait.

[...]
Même en français, il existe des conventions différentes pour les
caractères accentués. Même si toutes les autorités semblent
préférer que 'é' donne 'É', certains utilise la convention que 'é'


« préférer » n'est pas le bon mot : les autorités « indiquent »,
« précisent », « jurent », etc. :-)

donne 'E', voire
même que ça dépend du contexte : 'É' en initial, mais 'E' ailleurs.

Et ce n'est qu'un début. Si on quitte l'Europe occidental...


Effectivement. Alors dans un logiciel qui doit retrouver une valeur
quand les majuscules/minuscules ne sont pas respectées, il ne faut
pas convertir, mais bien utiliser un recherche approximative du
genre « LIKE » et demander à l'utilisateur de choisir/confirmer
qu'on a bien trouvé ce qu'il voulait si ce n'est pas parfaitement
identique.

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/



Avatar
kanze
Falk Tannhäuser wrote in message
news:...
wrote:
Même en français, il existe des conventions différentes pour les
caractères accentués. Même si toutes les autorités semblent préférer que
'é' donne 'É', certains utilise la convention que 'é' donne 'E'


Ce qui donne par exemple "UN INTERNE TUE A L'ASILE PSYCHIATRIQUE"
- au moins 4 interprétations sont possibles...


Je n'ai pas dit que c'était une bonne convention, seulement que c'en
était une.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
Jean-Marc Bourguet
writes:

Je n'arrive pas à rétrouver le document, mais dans le temps, il y
avait sur le site Unicode une explication de comment on doit
procéder dans une application interactive.


De memoire, 4 temps: majuscules, minuscule, titre, tel qu'entre.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
Alain Naigeon
"Erwann ABALEA" a écrit dans le message news:

On Thu, 22 Apr 2004, Falk Tannhäuser wrote:

wrote:
Même en français, il existe des conventions différentes pour les
caractères accentués. Même si toutes les autorités semblent préférer
que



'é' donne 'É', certains utilise la convention que 'é' donne 'E'
Ce qui donne par exemple "UN INTERNE TUE A L'ASILE PSYCHIATRIQUE"

- au moins 4 interprétations sont possibles...


De toute façon, un mec qui gueule comme ça, il ne faut pas l'écouter... ;)


AH, MAIS OSE DONC REPETER QUE JE NE M'APPELLE PAS STROUSTRUP ! :-)

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France



Avatar
kanze
"Michel Michaud" wrote in message
news:<TYPhc.64934$...
Dans news:,
Jean-Marc Bourguet wrote in message
news:...
"Guillaume Gourdin" writes:

Bonjour à tous, je ne trouve pas de fonctions qui permettent de
mettre une std::string en minuscule ou en majuscule. En existe
t-il ? Et si ce n'est pas le cas, comment me conseillez vous de
procéder ?




La vraie question est de savoir à quoi cette conversion servirait.


Tout à fait. Si c'est pour traiter les symboles dans un compilateur
Pascal (qui n'admet que les 26 lettres de base), std::codecvt fait bien
l'affaire. À condition, comme Jean-Marc a signalé, de n'utiliser que les
chaînes de type C.

[...]
Même en français, il existe des conventions différentes pour les
caractères accentués. Même si toutes les autorités semblent préférer
que 'é' donne 'É', certains utilise la convention que 'é'


« préférer » n'est pas le bon mot : les autorités « indiquent »,
« précisent », « jurent », etc. :-)


C'est vrai. Ce sont des « autorités », donc, ils « exigent »:-).

donne 'E', voire
même que ça dépend du contexte : 'É' en initial, mais 'E' ailleurs.

Et ce n'est qu'un début. Si on quitte l'Europe occidental...


Effectivement. Alors dans un logiciel qui doit retrouver une valeur
quand les majuscules/minuscules ne sont pas respectées, il ne faut
pas convertir, mais bien utiliser un recherche approximative du
genre « LIKE » et demander à l'utilisateur de choisir/confirmer
qu'on a bien trouvé ce qu'il voulait si ce n'est pas parfaitement
identique.


Il y a plusieurs solutions, selon ce qu'on veut faire. Mais il ne faut
pas être naîf. Si on veut comparer sans tenir compte de la case, il faut
commencer par définir ce que signifie « égal » dans ce cas-là. C'est
loin d'être évident.

Et si c'est certain que l'intéractif est le moyen le plus sûr d'arriver
à ce que veut l'utilisateur, ce n'est pas toujours une option possible.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34




Avatar
kanze
Jean-Marc Bourguet wrote in message
news:...
writes:

Je n'arrive pas à rétrouver le document, mais dans le temps, il y
avait sur le site Unicode une explication de comment on doit
procéder dans une application interactive.


De memoire, 4 temps: majuscules, minuscule, titre, tel qu'entre.


Surtout, qu'il fallait sauvegarder la forme initiale tant que la
possibilité de faire marche en arrière doit exister.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


1 2