Gérer le type char

UniXUniX Membre
14:32 modifié dans API AppKit #1
Salut.

J'ai une donnée qui ne doit contenir qu'un caractère. Je me suis dit, plutôt que de lui attribuer le type NSString, pourquoi pas char ....
Mes problèmes :
1) comment fait-on pour tester l'égalité avec une lettre ? Par exemple pour tester si monChar est égal à  la lettre Z
2) comment se fait l'affectation ? monChar = Z ?

Merci pour votre aide.

Réponses

  • 14:32 modifié #2
    Salut,

    Peut être devrais tu utiliser unichar qui est sur deux octects et aussi utilisé dans les NSString (characterAtIndex: retour un unichar).

    Sinon, char c='Z'

    if (c=='Z')... c'est l'équivalent de c==90...
  • UniXUniX Membre
    14:32 modifié #3
    Comme je n'ai aucune connaissance là  dessus, peux tu m'expliquer quel est l'intérêt d'utiliser plutôt unichar ?
  • fouffouf Membre
    14:32 modifié #4
    1) monChar == Z;
    2) monChar = Z;
    :P

    non, blague à  part, char en fait (je crois) en C c'est un int (unsigned mais là  je suis nettement moins sûr) et donc tu peux faire plein de truc marants du genre l'incrémenté (monChar = a; monChar++; et tu auras monChar == b) où faire des additions de lettre ??? :P.
    Pour cela, je te renvoie au code d'Aligator : http://www.objective-cocoa.org/forum/index.php?topic=1070.msg11733#msg11733

    [bon grilled par SuperMic]

    Unichar est un caractère unicode donc qui peux coder beaucoup plus de choses (accents, grec, cyrillique,....). Très utile mais plus lourd ;)
  • UniXUniX Membre
    14:32 modifié #5
    Ah ouais, c'est effectivement vachement utile lorsqu'on veut faire des manipulations dessus, etc ...

    Moi en fait, je ne fais que stocker une information. Les lettres sont archi simples (A, B, C, ...). Je ne les manipule jamais. Par contre il faut que je le stocke dans un tableau, donc sous forme de NSString.

    Au final, vaut-il mieux utiliser un char (ou unichar) ou un NSString ? Je commence à  me demander si c'est pas mieux un NSString ....
  • novembre 2005 modifié #6
    fouf > char c'est un char... codé sur 1 octet soit 8 bits soit 8 zéro ou un alignés. Un int c'est 4 colonnes de char :p soit 32bits. A la vitesse ou vont les ordis et leur quantité de ram, un unichar c'est pas vraiment plus lourd qu'un char...

    Unix > char ou unichar tu ne pourras les stocker que dans un tableau "en C", par exemple unichar monTab[30] tu peux modifier, parcourir le tableau. Mais ce tableau sera relativement statique. Si tu souhaites utiliser un NSMutableArray il te faudra stocker ces unichar (ou char) dans un objet NSNumber, récupérant ensuite la valeur [unNumber charValue]...

    Pour le choix entre char et unichar tout dépend de si t'utilise des caractères "basiques" comme de A à  Z et les chiffres, si tu veux un é ou à  il te vaudra un unichar... de même que si tu récupères le caractère depuis un NSString... (on sait jamais)

    Quand au choix NSString ou (uni)char à  toi de voir si dans une amélioration prochaine tu devras utiliser un NSString de deux ou plusieurs caractères ce qui risque de te reprendre la tête avec un simple tableau de (uni)char...

    En espérant avoir été suffisamment clair... et ne pas t'avoir fait peur avec mes explications ;)
  • UniXUniX Membre
    14:32 modifié #7
    Oui merci Supermic, tu m'as bien éclairé.
    Je vais finalement rester avec des char.  :P
Connectez-vous ou Inscrivez-vous pour répondre.