Convert const char* string to NSString with length AND encoding

tksohishi picture tksohishi · Jan 23, 2010 · Viewed 28.4k times · Source

I wonder which method would be better to convert const char* string to NSString.
I found there are some facts.

  • [NSString stringWithCString:length:] is kind of deprecated.
  • [NSString stringWithCString:encoding] may be used for my purpose

But I want to convert with length AND encoding(because I want to make that fine if I have some Non-ASCII character by setting encoding to UTF-8). Any thoughts?

I just think now

  1. create other char and copy with length by using std::strncpy(ch1, ch2, len)
  2. use [NSString stringWithCString:encoding:]

But it doesn't work well.

Answer

Jon Reid picture Jon Reid · Jan 23, 2010

If your const char* variable is named foo (and it points to a null-terminated string), just say

[NSString stringWithUTF8String:foo]

Because UTF-8 is a superset of ASCII, this will work whether foo points to UTF-8 or ASCII. Then you can move up to full Unicode with no problems.