59 votes

Comment utiliser printf avec NSString

Je dois utiliser quelque chose comme NSLog mais sans l'horodatage et le caractère de retour à la ligne, j'utilise donc printf . Comment puis-je l'utiliser avec NSString ?

102voto

Jacob Relkin Points 90729

Vous pouvez convertir un NSString en un UTF8 en appelant la fonction UTF8String méthode :

printf("%s", [string UTF8String]);

2voto

supernoob Points 21
//public method that accepts a string argument

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

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

D'après le fichier NSString.h (version html), la méthode UTF8String n'est disponible que sous Mac OSX.

(voir ci-dessous) Toutes les autres méthodes que j'ai examinées sont marquées comme "disponibilité:Openstep".

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

NOTE Les pointeurs de chaînes de caractères pointent vers une mémoire qui peut disparaître, il faut donc copier les chaînes si l'on veut conserver une copie de leur contenu, mais l'impression immédiate devrait fonctionner ?

Il existe également des méthodes qui renvoient une chaîne encodée, ainsi qu'une méthode pour tester si l'encodage que vous souhaitez fonctionne (je pense). Vous pouvez ainsi vérifier si l'encodage que vous souhaitez fonctionne, puis demander une chaîne qui a été encodée comme vous le souhaitez.

En lisant le fichier .h lui-même, on constate qu'il existe de nombreux encodages et traductions entre encodages. Ceux-ci sont gérés à l'aide d'énumérations, de sorte que vous pouvez passer le type d'encodage que vous souhaitez comme argument.

Sous linux, etc :

localiser NSString.h ** Notez que ceci a permis de trouver le fichier html doc également

sinon, faire un :

find /usr -name NSString.h

NOTE Votre kilométrage peut varier :)

Merci.

A partir du fichier doc html NSString.h :

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

Renvoie un pointeur sur une chaîne de caractères de 8 bits à terminaison nulle dans l'encodage par défaut. La mémoire pointée n'appartient pas à l'appelant, qui doit donc copier son contenu pour la conserver. Lève une NSCharacterConversionException si une perte d'information se produit 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 de l'encodage de chaîne C par défaut. Si la conversion entraîne une perte d'informations, les résultats sont imprévisibles. Vérifiez d'abord -canBeConvertedToEncoding :.

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

Renvoie un pointeur sur une chaîne de caractères à terminaison nulle dans l'encodage spécifié. NB. sous GNUstep, vous pouvez utiliser cette fonction pour obtenir une chaîne utf-16 à terminaison nulle (caractères de seize bits) ainsi que des chaînes de huit bits. La mémoire pointée n'appartient pas à l'appelant, qui doit donc copier son contenu pour la conserver. Lève une NSCharacterConversionException en cas de perte d'information lors de la conversion.

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

Retourne si cette chaîne peut être convertie dans l'encodage de chaîne donné sans perte d'information.

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