严格地说,本文主题与跨平台代码无关。但是由于在iPhone上,通常界面程序还是由Objective-C编写的,经常需要用到STL string和NSString之间的转换。下面是转换的代码:

 

NSString -> std::string

1
2
3
4
5
6
7
8
9
10
+(std::string)getString:(NSString*)theString
{
    int size = [theString length]*sizeof(char);
    char *buffer = (char*) malloc(size+1);
    memset(buffer, 0, size+1);
    [theString getCString:buffer maxLength:size+1 encoding:NSASCIIStringEncoding];
    std::string str(buffer,size);
    free(buffer);
    return str;
}

 

std::string -> NSString

1
2
3
4
+(NSString*)getNSString:(const std::string&)theString
{
    return [NSString stringWithCString:theString.c_str()];
}