Ho una variabile di tipo char[]
e voglio copiare il valore NSString
in esso. Come posso convertire un NSString
in un array di caratteri?Converti NSString in char array
risposta
NSString *s = @"Some string";
const char *c = [s UTF8String];
Si potrebbe anche usare -[NSString cStringUsingEncoding:]
se la stringa è codificato con qualcosa di diverso da UTF-8.
Una volta ottenuto il const char *
, si può lavorare con esso in modo simile a una serie di chars
:
printf("%c\n", c[5]);
Se si vuole modificare la stringa, fare una copia:
char *cpy = calloc([s length]+1, 1);
strncpy(cpy, c, [s length]);
// Do stuff with cpy
free(cpy);
La risposta di mipadi è la migliore se si desidera semplicemente un char*
contenente il contenuto della stringa, tuttavia NSString fornisce metodi per ottenere i dati in un buffer a te ti sei assegnato. Ad esempio, è possibile copiare i caratteri in un array di unichar
usando getCharacters:range:
come questo:
NSUInteger length = [str length];
unichar buffer[length];
[str getCharacters:buffer range:NSMakeRange(0, length)];
for (NSUInteger i = 0; i < length; i++)
{
doSomethingWithThis(buffer[i]);
}
Se si deve usare char
, quindi è possibile utilizzare il più complicato getBytes:maxLength:usedLength:encoding:options:range:remainingRange:
come questo (dimostrato in Eastern Polish Christmas Tree notazione):
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];
Piuttosto che getCharacters:range:
, io uso:
[stringToCopy getCString:c_buffer maxLength:c_buffer_length encoding:NSUTF8StringEncoding];
Il risultato è uno char [] (anziché unichar []), che è ciò che l'OP desiderava e ciò che probabilmente si desidera utilizzare per la compatibilità con C.
NSMutableArray *array = [NSMutableArray array];
for (int i = 0; i < [string length]; i++) {
[array addObject:[NSString stringWithFormat:@"%C", [string characterAtIndex:i]]];
}
In Swift, un array di char è colmato come UnsafePointer<Int8>
. Accesso caratteri funziona allo stesso modo in Swift per un NSString
:
let str: NSString = "hello"
let charStr = str.UTF8String // UnsafePointer<Int8>
Per una rapida String
cose oggetto sono un po 'diverso:
let str = "hello"
let charStr = str.cStringUsingEncoding(NSUTF8StringEncoding)
charStr
è [CChar]?
dove CChar
è un typeailais per Int8
.
Abbiamo bisogno di riprodurre NSString come array di caratteri per lavorare su pratiche di codifica che è altrimenti molto più semplice da fare nella codifica C semplice. Utilizzo di characterAtIndex: e appendFormat: mi aiuta. Potrebbe essere questo aiuterà.
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);
qual è il differenziale tra la risposta e .... NSMutableString * strResult = [NSMutableString stringWithString: str]; ? – greenhouse
- 1. Converti char [] array di String
- 2. Converti array di caratteri in char unsigned *
- 3. Converti NSMutableAttributedString in NSString
- 4. converti NSTaggedPointerString in NSString
- 5. Sostituire un char in NSString
- 6. Converti char * in LPWSTR
- 7. Converti lptstr in char *
- 8. Converti CharCode in Char?
- 9. Converti BSTR in char *
- 10. Converti stringa in char
- 11. Converti CString in const char *
- 12. Converti boost :: uuid in char *
- 13. Converti const char ** in void *?
- 14. Char Array VS Char *
- 15. Converti Go [] byte in un C * char
- 16. .NET/C# - Converti char [] in stringa
- 17. Conversione di una NSString * in char?
- 18. Converti char [] per LPCWSTR
- 19. Objective-C Converti NSData in NSString
- 20. Xcode iOS: Converti int in NSString
- 21. Conversione char [,] array a char **
- 22. Allineamento dei char char array
- 23. Converti array in JSON
- 24. Converti array in JSON
- 25. Converti stringa esadecimale (char []) in int?
- 26. Converti const char * in const wchar_t *
- 27. Converti char * a * WCHAR in C
- 28. Converti char A-Z in int corrispondente.
- 29. C# Converti Char in Byte (rappresentazione esadecimale)
- 30. lanciare un NSString a char problema
chiese un array di caratteri questo è un const char – JonasG
@Maxner: E 'un puntatore * * in una stringa di caratteri const. – mipadi
Sto cercando una risposta completa che mostri il codice da 'NSString * someString' a' char myArray [] = .. '.Ho davvero bisogno di questo, potresti aggiornare la tua risposta? evviva – JonasG