J'ai une variable de type char[]
et je veux copier la valeur NSString
dedans. Comment puis-je convertir un NSString
en tableau de char?Convertir NSString en tableau char
Répondre
Utilisation -[NSString UTF8String]
:
NSString *s = @"Some string";
const char *c = [s UTF8String];
Vous pouvez également utiliser -[NSString cStringUsingEncoding:]
si votre chaîne est codée avec autre chose que UTF-8.
Une fois que vous avez la const char *
, vous pouvez travailler avec elle de façon similaire à un tableau de chars
:
printf("%c\n", c[5]);
Si vous souhaitez modifier la chaîne, faire une copie:
char *cpy = calloc([s length]+1, 1);
strncpy(cpy, c, [s length]);
// Do stuff with cpy
free(cpy);
La réponse de mipadi est la meilleure si vous voulez juste un char*
contenant le contenu de la chaîne, mais NSString fournit des méthodes pour obtenir les données dans un tampon à vous vous êtes attribué. Par exemple, vous pouvez copier les caractères dans un tableau de unichar
en utilisant getCharacters:range:
comme ceci:
NSUInteger length = [str length];
unichar buffer[length];
[str getCharacters:buffer range:NSMakeRange(0, length)];
for (NSUInteger i = 0; i < length; i++)
{
doSomethingWithThis(buffer[i]);
}
Si vous devez utiliser char
, vous pouvez utiliser le getBytes:maxLength:usedLength:encoding:options:range:remainingRange:
plus compliqué comme ça (démontré dans Eastern Polish Christmas Tree notation):
NSUInteger length = [str length];
NSUInteger bufferSize = 500;
char buffer[bufferSize] = {0};
[str getBytes:buffer
maxLength:(bufferSize - 1)
usedLength:NULL
encoding:NSUTF8StringEncoding
options:0
range:NSMakeRange(0, length)
remainingRange:NULL];
plutôt que getCharacters:range:
, j'utilise:
[stringToCopy getCString:c_buffer maxLength:c_buffer_length encoding:NSUTF8StringEncoding];
Le résultat est un char [] (au lieu de unichar []), ce qui est ce que l'OP voulait, et ce que vous voulez probablement utiliser pour la compatibilité C.
NSMutableArray *array = [NSMutableArray array];
for (int i = 0; i < [string length]; i++) {
[array addObject:[NSString stringWithFormat:@"%C", [string characterAtIndex:i]]];
}
Dans Swift, un tableau char est ponté comme UnsafePointer<Int8>
. Accès aux caractères fonctionne de la même manière Swift pour une NSString
:
let str: NSString = "hello"
let charStr = str.UTF8String // UnsafePointer<Int8>
Pour une des choses objet Swift String
sont un peu différentes:
let str = "hello"
let charStr = str.cStringUsingEncoding(NSUTF8StringEncoding)
charStr
est [CChar]?
où CChar
est un typeailais pour Int8
.
Nous avons besoin de jouer à NSString en tant que tableau de caractères pour travailler sur des pratiques de codage, ce qui est autrement beaucoup plus simple à faire en codage C simple. En utilisant characterAtIndex: et appendFormat: m'aide. Peut être cela aidera.
NSString *str = @"abcdef";
NSMutableString *strResult = [NSMutableString string];
for (NSUInteger i = 0; i < [str length]; i++) {
char ch = [str characterAtIndex:i];
[strResult appendFormat:@"%c", ch];
}
NSLog(@"%@", strResult);
quel est le diff entre votre réponse et .... NSMutableString * strResult = [NSMutableString stringWithString: str]; ? – greenhouse
- 1. Comment convertir NSString en char?
- 2. Convertir char en int à NSString
- 3. Conversion d'un NSString * en char?
- 4. convertir char ** en char * ou char
- 5. Diviser NSString en tableau
- 6. Comment convertir un tableau char en tableau wchar_t?
- 7. Comment convertir cstring en NSString et NSString en cstring?
- 8. nsstring et const char * conversion
- 9. Convertir NSString en chaîne
- 10. Convertir NSString en NSArray
- 11. Impossible de convertir const char * en char *
- 12. realloc - convertir int en char
- 13. Convertir un tableau char en UNICODE dans MFC C++
- 14. Comment convertir un wstring en NSString
- 15. Comment convertir NSString * en ANTLR3_UINT8 ou ANTLR3_UINT16
- 16. Comment convertir cstring en NSString?
- 17. Convertir NSData [UIImage] en NSString
- 18. Comment convertir NSString en NSMutableArray?
- 19. Comment convertir nsstring en uicolor?
- 20. Comment convertir nsstring en nsdictionary?
- 21. Remplacer un char dans NSString
- 22. Comment convertir char * en PRUnichar *
- 23. convertir un int en char *
- 24. JNI convertir jstring en char *
- 25. Convertir char [] en System :: Object
- 26. Comment convertir wchar_t ** en char **?
- 27. Comment convertir std :: string en NSString?
- 28. Comment convertir un NSString en valeurs hexadécimales
- 29. Convertir une chaîne, type char en System.Windows.Forms.Keys
- 30. .NET/C# - Convertir char [] en chaîne
Il a demandé un tableau de char c'est un const char – JonasG
@Maxner: Il est un pointeur * * à une chaîne de caractères const. – mipadi
Je cherche une réponse complète qui montre le code de 'NSString * someString' à' char myArray [] = .. '.J'ai vraiment besoin de cela, pourriez-vous s'il vous plaît mettre à jour votre réponse? acclamations – JonasG