严格地说,本文主题与跨平台代码无关。但是由于在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 ()];
} |