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]
(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:@""];
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.