Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert const char* string to NSString with length AND encoding

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.

like image 932
tksohishi Avatar asked Jan 23 '10 02:01

tksohishi


2 Answers

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.

like image 73
Jon Reid Avatar answered Oct 17 '22 11:10

Jon Reid


Use:

[NSString initWithBytes:length:encoding].
like image 25
Dietrich Epp Avatar answered Oct 17 '22 12:10

Dietrich Epp