23 votes

Objective-C : unichar vs. char

Je suis un peu confus entre un unichar et un char. Puis-je traiter les unichars de la même manière que les chars ?

Par exemple, puis-je faire ceci :

-(BOOL)isNewLine:(unichar)c {

if(c == '\n')
  return YES;
else
  return NO;

}

24voto

Alex Martelli Points 330805

Oui, unichar est en interne unsigned short afin de pouvoir le comparer de manière significative avec une char (si cette dernière est en ASCII, mais cela fonctionne bien pour '\n' ).

6voto

Peter N Lewis Points 12025

Faites attention en vérifiant la présence de newline que vous connaissez le format de vos fins de ligne, car Unix (et le Mac moderne) utilise \n mais Windows utilise \r\n et le Mac classique utilise \r.

0voto

Olof_t Points 254

Lorsque vous comparez des unichars, pensez plutôt à utiliser :

if ([[NSCharacterSet newlineCharacterSet] characterIsMember:unicharCharacter])
{
    //any type of newline
}
else
{
    //etc
}

Vous pourrez alors attraper tous les types de saut de ligne et disposer d'un code que vous pourrez facilement modifier pour correspondre à différents jeux de caractères (comme whitespaceAndNewlineCharacterSet).

C'est le grand avantage des unichars.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X