(Débutant en obj-C) characterAtIndex et accent

iDanGener

.
Club iGen
12 Mars 2011
1 503
410
Bonjour,
Je m'initie à l'objective-C et j'ai un petit problème avec les chaînes de caractères.

Si je fais,
Bloc de code:
NSString *uneChaine = @"Bonjour à tous";
NSLog(@"Voici la chaine: %@", uneChaine);

tout est parfait et j'obtiens «Voici la chaine: Bonjour à tous». Cependant, si je passe les caractères un à un

Bloc de code:
int nbrCar = [uneChaine length];
     NSLog(@"La chaine «%@» contient %i caractères", uneChaine, nbrCar);	
	
int i;
char carac;
for (i=1;i<=nbrCar;i++){
     carac = [uneChaine characterAtIndex:i-1];
     NSLog(@"Le %i ième caractère de «%@» est «%c»:",i, uneChaine, carac);
     }

alors là j'ai un problème avec le «à» (il sort un «‡»). J'ai le même problème si je définis la chaîne avec initWithUTF8String. Comment puis-je extraire le «à» ?

Daniel
 
Un char est codé sur 8 bits. Utilise un wchar_t ou un unichar (ce que renvoie la fonction appelée ...).
 
Un char est codé sur 8 bits. Utilise un wchar_t ou un unichar (ce que renvoie la fonction appelée ...).


Bonjour,

Merci pour votre réponse.

J'ai remplacé «char carac» par «unichar carac» mais j'obtiens la même sortie. Idem si je déclare « wchar_t carac». En plus d'utiliser votre suggestion, est-ce que je dois définir ma chaîne initiale avec initWithUTF8String?

Daniel

---------- Nouveau message ajouté à 09h20 ---------- Le message précédent a été envoyé à 09h14 ----------

Je ne sais répondre à ta question mais un conseil, initialise i à 0.

Bonjour,

Pourquoi suggérez-vous d'initialiser à 0? J'ai besoin plus loin de i et de i-1 lorsque j'initialise avec 1. Si j'initialise à 0, je vais devoir utiliser i+1 et i plus loin. Je trouve plus naturel de conserver i pour le rang du caractère qui se trouve à l'index i-1 de la chaîne.

Daniel
 
Je te conseille cela car c'est bien plus simple et cela rend ton code bien plus clair c'est pour cela ;)
Plutôt que d'utiliser des -1 et des +1...
 
Je te conseille cela car c'est bien plus simple et cela rend ton code bien plus clair c'est pour cela ;)
Plutôt que d'utiliser des -1 et des +1...

Ok, merci, je verrai à l'usage (mais là, j'avais besoin de (i et i+1) ou (i-1 et i) ).

J'ai lu pas mal depuis quelques jours sur objective C et ouf que c'est «un peu» confondant... :afraid:

Mais je ne me décourage pas. Je sens qu'il y a du support autour :)

Merci
 
%.*s, len, data, offset :p mais c'est seulement pour les grands BTW %s of the char pointer will print the utf8

hint:

sizeof(char)
sizeof(uint16_t)

je ne te conseille pas wchar_t si cross-platform (windows turd) 16 0u 32, ton probleme n'est pas lié a l'obj-c mais a des grosses lacunes concernant 1 le c 2 l'unicode

@Coolsinus arrete de raconter des conneries ca nous fera des vacances
 
Dernière édition: