web-dev-qa-db-fra.com

Comment utiliser printf avec NSString

Je dois utiliser quelque chose comme NSLog mais sans les caractères timestamp et newline, donc j'utilise printf Comment puis-je l'utiliser avec NSString?

59
node ninja

Vous pouvez convertir une NSString en une chaîne UTF8 en appelant la méthode UTF8String:

printf("%s", [string UTF8String]);
97
Jacob Relkin
//public method that accepts a string argument

- (void) sayThis : ( NSString* )  this 
{

    printf("%s",[this cString]);    
}

Selon NSString.h (version html), la méthode UTF8String n’est disponible que sur Mac OSX.

(voir ci-dessous) Toutes les autres méthodes que j'ai consultées sont marquées comme suit: 'availability: Openstep'

Il existe d'autres méthodes qui renverront des chaînes char * normales, mais elles peuvent générer des exceptions de conversion de caractères.

NOTELes pointeurs de chaîne pointent vers la mémoire susceptible de disparaître. Vous devez donc copier les chaînes si vous souhaitez conserver une copie du contenu de la chaîne, mais une impression immédiate devrait-elle convenir?

Il existe également des méthodes qui renverront une chaîne codée et une méthode pour vérifier si le codage souhaité fonctionnera (je pense) pour vous permettre de vérifier si le codage requis fonctionnera, puis de demander une chaîne codée de la manière requise.

La lecture du fichier .h lui-même fait apparaître de nombreux encodages et traductions entre les encodages . Ceux-ci sont gérés à l'aide d'énumérations afin que vous puissiez passer le type d'encodage souhaité en tant qu'argument.

Sur linux etc.

localisez NSString.h ** Notez que ceci a trouvé le fichier doc html également

sinon faire un:

trouver/usr -name NSString.h

NOTEVotre kilométrage peut varier :)

Merci.

A partir du fichier doc html NSString.h:

cString - (const char *) cString; Disponibilité: OpenStep

Renvoie un pointeur sur une chaîne de caractères 8 bits terminée par un caractère null dans le codage par défaut. La mémoire désignée n'appartient pas à l'appelant. Par conséquent, l'appelant doit copier son contenu pour le conserver. Déclenche une exception NSCharacterConversionException en cas de perte d'informations lors de la conversion. (Voir -canBeConvertedToEncoding:.)

cStringLength - (NSUInteger) cStringLength; Disponibilité: OpenStep

Renvoie la longueur d'une version de cette chaîne unicode convertie en octets à l'aide du codage de chaîne C par défaut. Si la conversion entraîne une perte d'informations, les résultats sont imprévisibles. Vérifiez -canBeConvertedToEncoding: d'abord.

cStringUsingEncoding: - (const char *) cStringUsingEncoding: codage (NSStringEncoding); Disponibilité: MacOS-X 10.4.0, Base 1.2.0

Renvoie un pointeur sur une chaîne de caractères terminée par un caractère null dans le codage spécifié . NB. sous GNUstep, vous pouvez utiliser ceci pour obtenir une chaîne utf-16 terminée par zéro (caractères de seize bits) ainsi que des chaînes de huit bits . La mémoire pointée n'est pas la propriété de l'appelant, donc l'appelant doit copier son contenu pour conserver it . Déclenche une exception NSCharacterConversionException en cas de perte d'informations lors de la conversion.

canBeConvertedToEncoding: - (BOOL) canBeConvertedToEncoding: codage (NSStringEncoding); Disponibilité: OpenStep

Indique si cette chaîne peut être convertie en un codage de chaîne donné sans perte d'informations. 

0
supernoob