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
?
Réponses
Trop de publicités?//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.