Showing posts with label NUL character. Show all posts
Showing posts with label NUL character. Show all posts

Saturday, January 11, 2014

NUL karaktert tartalmzó string

Mike Ash bemutat pár dolgot amivel meg lehet zavarni a Cocoa-t, és ezek közül a NUL karaktert tartalmazó string könnyen előjöhet:
A lényeg, hogy C string-eknél ez jelöli a végét. Egy NSString simán tartalmazhat NUL karaktert ami ASCII-ben és Unicode-ban is:
NSString *s = @"abc\0def";
Ha utána megnézzük a hosszát akkor ugyan még mindig 7-et kapunk:
(lldb) p [s length]
(unsigned int) $1 = 7
de ha magával a sting-gel akarunk csinálni valami akkor könnyen belefuthatunk egy eslő ránézésre érthetetlen problémába:
(lldb) po s
abc
(lldb) po [s stringByAppendingPathExtension:@"txt"]
abc
Matt Thompson NSCharacterSet-es írásából kiindulva megoldás lehet a NUL karakterek eltávolítására a string feldarabolása egy NSArray-ba a ezek mentén majd a tömb eleminek összfűzése:
if (NSNotFound != [s rangeOfString:@"\0"].location) {
    NSLog(@"NUL character found");
    NSArray *components = [s componentsSeparatedByString:@"\0"];
    s = [components componentsJoinedByString:@""];
}