|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éprouvé
![]() ![]() Jonathan MERCIERInscription : mars 2009 Messages : 338 ![]() |
Je souhaitais savoir pourquoi Glib::ustring ne remplace pas les std::wstring en norme standard dans le futur?
Personnellement je trouve les Glib::ustring beaucoup plus pratique que les std::wstring. Pouquoi réfuter son intégration? alors que tous les languages modernes intègrent naturellemnt l'unicode! Les Glib::ustring ne sont ils pas une solution efficace? |
|
00
|
|
|
#2 |
![]() ![]() |
Salut,
Je ne connais pas bien Glib::ustring, mais, peut-être n'est-ce que parce que... cette classe ne présente pas la même interface que std: Il faut comprendre que, de façon tout à fait générale, il y a un grand principe qui prédomine énormément au moment de faire évoluer la norme: il faut assurer une compatibilité aussi importante que possible avec le code ancien. En effet, lorsqu'un langage largement utilisé existe depuis une bonne vingtaine d'années, on peut estimer que des millions, si pas des milliards de lignes de code ont été écrite de par le monde. Si on apporte des changements trop importants à l'existant, cela risque de nécessiter énormément de modifications dans ces lignes de code, surtout si la modification touche à quelque chose d'aussi classique que... les chaines de caractères. De plus, il ne faut pas oublier que le propre du C++ est... de pouvoir s'adapter à de nombreux systèmes d'exploitation et d'architectures. Tous ne sont pas forcément capables d'utiliser glib
__________________
en bas de page
|
|
|
00
|
|
|
#3 |
|
Membre éprouvé
![]() ![]() Jonathan MERCIERInscription : mars 2009 Messages : 338 ![]() |
oui je comprend bien le problème de la compatibilité descendante mais pourquoi pas mettre un nouveau type ustring dans std et de laisser wstring (le mettre en deprecated )
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : juin 2008 Messages : 7 631 ![]() |
Salut,
Il me semble que c'est le but des u16string (basic_string<char16_t>) et u32string (basic_string<char32_t>) introduits, non ? |
|
|
00
|
|
|
#5 | |
|
Membre éprouvé
![]() ![]() Jonathan MERCIERInscription : mars 2009 Messages : 338 ![]() |
je cite:
Citation:
|
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() ![]() Joel LamotteDéveloppeur de jeux vidéo Inscription : août 2004 Messages : 1 554 ![]() |
Définis "moins bien" voir?
|
|
00
|
|
|
#7 |
|
Membre éprouvé
![]() ![]() Jonathan MERCIERInscription : mars 2009 Messages : 338 ![]() |
moins bien par rapport a que j'ai cité précédement
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() ![]() Joel LamotteDéveloppeur de jeux vidéo Inscription : août 2004 Messages : 1 554 ![]() |
Ca n'explique pas grand chose.
Une discussion en rapport : http://www.developpez.net/forums/d93...string-length/ |
|
00
|
|
|
#9 | |
![]() ![]() Loïc JolyDéveloppeur informatique Inscription : août 2004 Messages : 4 675 ![]() |
Citation:
Pour avoir utilisé Glib::ustring sur un vrai projet, je peux dire que je suis bien content d'avoir std::wstring... Tout d'abord, en terme d'encodage, utf-8 n'est pas la panacée. Dans mon environnement, les caractères servant à coder des langues asiatiques utiles pour l'archéologie, on n'est pas concerné. Donc des wstring sur 16 bit suffisent à tout encoder avec 1 emplacement par caractère, et jamais plus. Et du coup, les traitement se font de manière plus rapide qu'avec un Glib::ustring qui doit sans cesse faire des calculs pour savoir si un caractères est mono-octet ou pas. On utilise par contre souvent des Glib::ustring pour le stockage (et on sait qu'on ne sera pas très bon pour certaines langues). De plus, en dehors de l'encodage, en terme d'interface, Glib::ustring présente quelques choix qui sont douteux. Par exemple, la conversion implicite en std::string qui ne prend pas en compte la locale courante est une source de bugs non négligeable. Le fait qu'ustring soit non templatée (donc non configurable) est aussi problématique. Comment écrire un ustring qui soit non case-sensitive ? Ou un ustring alloué en mémoire partagée ? Et enfin, la license associée à Glib::ustring, trop restrictive, ne permettrait pas son introduction dans un standard. PS : La doc que tu cites ne mentionne pas les u16string et u32string, puisqu'il n'existent pas encore. Mais ces deux types sont bien à encodage variable. |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com