tags:

views:

40

answers:

2

hi all, i have 1 variable of type char[] and i want to copy nnstring value in it can anyone know how to convert nnstring to char array.

A: 

Use -[NSString UTF8String]:

NSString *s = @"Some string";
const char *c = [s UTF8String];

You could also use -[NSString cStringUsingEncoding:] if your string is encoded with something other than UTF-8.

mipadi
A: 

mipadi's answer is the best if you just want a char* containing the contents of the string, however NSString provides methods for obtaining the data into a buffer that you have allocated yourself. For example, you can copy the characters into an array of unichar using getCharacters:range: like this:

NSUInteger length = [str length];
unichar buffer[length];

[str getCharacters:buffer range:NSMakeRange(0, length)];

for (NSUInteger i = 0; i < length; i++)
{
    doSomethingWithThis(buffer[i]);
}

If you have to use char, then you can use the more complicated getBytes:maxLength:usedLength:encoding:options:range:remainingRange: like this (demonstrated in Eastern Polish Christmas Tree notation):

NSUInteger length = [str length];
NSUInteger bufferSize = 500;

char buffer[bufferSize] = {0};

[str       getBytes:buffer
          maxLength:(bufferSize - 1)
         usedLength:NULL
           encoding:NSUTF8StringEncoding
            options:0
              range:NSMakeRange(0, length)
     remainingRange:NULL];
dreamlax