On Mar 28, 2012, at 11:00 AM, Charles Srstka <cocoa...@charlessoft.com> wrote:
> Unicode NULL is the least of your problems. In UTF16, each character in the 
> normal ASCII range is going to contain a zero as one of its two bytes (which 
> one, of course, depending on whether the encoding is big- or little-endian). 
> CFStringAppendCString(), along with the other functions that take C strings, 
> stops at the first zero byte it hits, which means that unless your entire 
> file is in a non-Western script, it’s going to get cut short.
> 
> CFStringAppendCString() is not what you want if you might be using UTF16.

That's right. The first thing CFStringAppendCString() does is call strlen().

CoreFoundation does have a function internally that would do what you want. You 
could file a bug report asking for a new API to match. However, it requires 
almost as much work as using a temporary CFString object anyway, except in some 
ASCII and UTF-16 cases. I would not expect your CFStringCreateWithBytesNoCopy() 
solution to be much slower unless you're performing a large number of short 
appends with one of CFString's preferred encodings.


-- 
Greg Parker      gpar...@apple.com     Runtime Wrangler



_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to