• [^] # Re: bannir "connect"

    Posté par . En réponse au journal Banni de chez Microsoft.. Évalué à 2.

    ben non string n'est pas un type de base, ne serai-ce que parce que sa représentation dépend du charset et de pleins d'autre détail qui peuvent varier
    String n'est pas un type de base?
    Pourquoi donc TOUS les autres langages (C mis a part) l'implementent comme un type de base?
    Surement parce que j'ai encore jamais vu un seul programme qui n'utilise pas des strings...
    C'est un type de base au meme titre que int, float, char, boolean et tous leurs potes.
    Sinon tu pourrais aussi dire que c'est pareil pour les int: signe, ou pas? 32 bits? pourquoi pas moins ou plus? Allez, paf, transformons implicitement 2 dans "variable + 2" en void* et faison planter le programme qui fait ca. Le dev a qu'a faire variable + int(2), apres tout, on est pas en C, non mais.

    Ou les char? ASCII 7 ou 8 bits? UTF-8? ISO 8559-1?

    C'est sur qu'il va falloir en faire un objet pour integrer toutes les methodes, mais ca n'empeche pas d'avoir une string literal qui soit reellement une string, plutot que de la transformer implicitement dans un type qui n'a strictement rien a voir avec sa representation dans le code.

    C'est un type complexe gérant plein de petit truc, comme le find, rfind, erase, find_first_of, find_first_not_of, find_last_of...
    Je vais me faire allumer, mais non, std::String ne gere pas plein de petits truc, elle gere a peine la base de la manipulation de string.
    Ce que tu viens de citer, c'est 95% de l'api string et c'est a peine suffisant pour manipuler decemment une quelconque chaine dans les cas les plus simple.

    Compares a n'importe quelle autre API string, ca fait un choc de voir ce que std::String gere en comparaison.
    Pas de split. pas de trim, pas de regexp, aucune gestion du upper/lower case, pas de starts/ends with, un replace en mousse, pas moyen d'obternir la version string des autres types de base...

    Resultat, oblige de reimplementer soi meme une bonne partie de la roue, et du coup on se tape des pinpins qui utilisent gets() ou strcpy().

    Il est la le lien avec le probleme, pour repondre a n-2.