2016-06-02 10 views
0

Gibt es eine Möglichkeit, NSString als ein Array zu behandeln, wie Sie mit C Zeichenfolgen können Zeigerarithmetik verwenden, um eine NSString Schleife durchlaufen? Ich versuche, eine einfache strstr zu tun, ohne eingebaute Objective C Methoden zu verwenden, so brauche ich eine C Stil-Array zu durchlaufen. Wenn es eine bessere Datenstruktur gibt, die ich verwenden kann, lassen Sie es mich wissen.Behandlung von NSString als Arraypointerarithmetik

+0

@ "Somerstring" .UTF8String ... dann geige mit ihm (und mit Geige mit es bedeutete ich lese es, schreibe nicht in den internen Speicher) –

+0

besser verwenden '-getBytes: maxLength: enocding:' das schafft eine Kopie mit definierter Lebensdauer. Wie auch immer, für was? Wenn das Schleifen mit '-characterAtIndex:' ein Leistungsproblem ist, sollte man zuerst 'IMP' versuchen. –

+0

Sie sollten Ihre Frage mit einem klaren Beispiel für das, was Sie tun möchten, aktualisieren. – rmaddy

Antwort

0

einfach können Sie den C-String Array zugreifen wie

NSString *string = @"string"; 

for (NSInteger i=0; i<string.length; i++) { 
    printf("%c\n",string.UTF8String[i]); 
    // or 
    printf("%c\n",[string characterAtIndex:i]); 
} 

die Ausgabe wie diese

s 
s 
t 
t 
r 
r 
i 
i 
n 
n 
g 
g 
0

Siehe [NSString characterAtIndex:] Methode aussehen wird ein Zeichen an einem bestimmten Index zuzugreifen, wie [NSArray objectAtIndex:]:

NSString *test = @"Hello World"; 
for (NSUInteger i = 0; i < test.length; i++) 
    unichar c = [test characterAtIndex:i];